vm_eval.c: preserve encoding
* vm_eval.c (rb_method_call_status): preserve encoding of called method name in error messages. * vm_insnhelper.c (vm_call_method): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48572 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
ddfcb96930
commit
5d4aad2b1b
@ -864,4 +864,17 @@ class TestMethod < Test::Unit::TestCase
|
|||||||
n = 10_000_000
|
n = 10_000_000
|
||||||
assert_equal n , rest_parameter(*(1..n)).size, '[Feature #10440]'
|
assert_equal n , rest_parameter(*(1..n)).size, '[Feature #10440]'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_insecure_method
|
||||||
|
m = "\u{5371 967a}"
|
||||||
|
c = Class.new do
|
||||||
|
proc {$SAFE=3;def foo;end}.call
|
||||||
|
alias_method m, "foo"
|
||||||
|
eval "def bar; #{m}; end"
|
||||||
|
end
|
||||||
|
obj = c.new
|
||||||
|
assert_raise_with_message(SecurityError, /#{m}/) do
|
||||||
|
obj.bar
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -583,8 +583,8 @@ rb_method_call_status(rb_thread_t *th, const rb_method_entry_t *me, call_type sc
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (NOEX_SAFE(noex) > th->safe_level) {
|
if (NOEX_SAFE(noex) > th->safe_level) {
|
||||||
rb_raise(rb_eSecurityError, "calling insecure method: %s",
|
rb_raise(rb_eSecurityError, "calling insecure method: %"PRIsVALUE,
|
||||||
rb_id2name(me->called_id));
|
rb_id2str(me->called_id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1779,7 +1779,7 @@ vm_call_method(rb_thread_t *th, rb_control_frame_t *cfp, rb_call_info_t *ci)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((noex_safe = NOEX_SAFE(ci->me->flag)) > th->safe_level && (noex_safe > 2)) {
|
else if ((noex_safe = NOEX_SAFE(ci->me->flag)) > th->safe_level && (noex_safe > 2)) {
|
||||||
rb_raise(rb_eSecurityError, "calling insecure method: %s", rb_id2name(ci->mid));
|
rb_raise(rb_eSecurityError, "calling insecure method: %"PRIsVALUE, rb_id2str(ci->mid));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
goto normal_method_dispatch;
|
goto normal_method_dispatch;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user