diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-12-13 09:19:20 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-12-13 09:19:20 +0000 |
commit | 739d9a37cb03f01dc92b9e4f401e6cd83b6e1ab8 (patch) | |
tree | ea6a76c581db2829843ef70592cd876bddb254db | |
parent | 207360044ba6e03e2132fdef2985a485da9a8466 (diff) | |
download | ruby-739d9a37cb03f01dc92b9e4f401e6cd83b6e1ab8.tar.gz |
win32ole.c: check argument type
* ext/win32ole/win32ole.c (ole_vstr2wc): check argument type, vstr
must be a String here. reported by Marcin 'Icewall' Noga of
Cisco Talos.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53074 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | ext/win32ole/win32ole.c | 5 | ||||
-rw-r--r-- | test/win32ole/test_win32ole.rb | 3 |
3 files changed, 14 insertions, 0 deletions
@@ -1,3 +1,9 @@ +Sun Dec 13 18:19:20 2015 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * ext/win32ole/win32ole.c (ole_vstr2wc): check argument type, vstr + must be a String here. reported by Marcin 'Icewall' Noga of + Cisco Talos. + Sun Dec 13 16:41:01 2015 Nobuyoshi Nakada <nobu@ruby-lang.org> * configure.in (BOOTSTRAPRUBY): make BASERUBY full path before diff --git a/ext/win32ole/win32ole.c b/ext/win32ole/win32ole.c index 14147ab7bc..02ad82b4d4 100644 --- a/ext/win32ole/win32ole.c +++ b/ext/win32ole/win32ole.c @@ -860,6 +860,11 @@ ole_vstr2wc(VALUE vstr) LPWSTR pw; st_data_t data; struct st_table *tbl = DATA_PTR(enc2cp_hash); + + /* do not type-conversion here to prevent from other arguments + * changing (if exist) */ + Check_Type(vstr, T_STRING); + enc = rb_enc_get(vstr); if (st_lookup(tbl, (VALUE)enc | FIXNUM_FLAG, &data)) { diff --git a/test/win32ole/test_win32ole.rb b/test/win32ole/test_win32ole.rb index b41fd591fe..6cf2b3ce3f 100644 --- a/test/win32ole/test_win32ole.rb +++ b/test/win32ole/test_win32ole.rb @@ -312,6 +312,9 @@ if defined?(WIN32OLE) assert_raise(ArgumentError) { shell.ole_query_interface } + assert_raise(TypeError) { + shell.ole_query_interface(0x11223344) + } shell2 = shell.ole_query_interface('{A4C6892C-3BA9-11D2-9DEA-00C04FB16162}') assert_instance_of(WIN32OLE, shell2) end |