mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
win32ole.c: check arity
* ext/win32ole/win32ole.c (fole_missing): should check actual argument count before accessing. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40184 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
418b8e121c
commit
311960cdaf
3 changed files with 14 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
Mon Apr 8 17:19:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* ext/win32ole/win32ole.c (fole_missing): should check actual argument
|
||||
count before accessing.
|
||||
|
||||
Mon Apr 8 16:03:55 2013 Yuki Yugui Sonoda <yugui@google.com>
|
||||
|
||||
Fixes a build failure of ext/ripper/ripper.c on building out of place.
|
||||
|
|
|
@ -4078,6 +4078,7 @@ fole_missing(int argc, VALUE *argv, VALUE self)
|
|||
ID id;
|
||||
const char* mname;
|
||||
int n;
|
||||
rb_check_arity(argc, 1, UNLIMITED_ARGUMENTS);
|
||||
id = rb_to_id(argv[0]);
|
||||
mname = rb_id2name(id);
|
||||
if(!mname) {
|
||||
|
@ -4085,6 +4086,7 @@ fole_missing(int argc, VALUE *argv, VALUE self)
|
|||
}
|
||||
n = strlen(mname);
|
||||
if(mname[n-1] == '=') {
|
||||
rb_check_arity(argc, 2, 2);
|
||||
argv[0] = rb_enc_str_new(mname, n-1, cWIN32OLE_enc);
|
||||
|
||||
return ole_propertyput(self, argv[0], argv[1]);
|
||||
|
|
|
@ -495,6 +495,13 @@ if defined?(WIN32OLE)
|
|||
def test_const_LOCALE_USER_DEFAULT
|
||||
assert_equal(0x0400, WIN32OLE::LOCALE_USER_DEFAULT);
|
||||
end
|
||||
|
||||
def test_method_missing
|
||||
assert_raise(ArgumentError) {@dict1.method_missing}
|
||||
assert_raise(TypeError) {@dict1.method_missing(1)}
|
||||
assert_raise(ArgumentError) {@dict1.method_missing("foo=")}
|
||||
assert_raise(ArgumentError) {@dict1.method_missing("foo=", 1, 2)}
|
||||
end
|
||||
end
|
||||
|
||||
# test of subclass of WIN32OLE
|
||||
|
|
Loading…
Add table
Reference in a new issue