From 6655667d738d59cc824b264eef4587fe9700af15 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 16 Apr 2012 12:25:29 +0000 Subject: [PATCH] * dln.c (rb_w32_check_imported): skip ordinal entries. patched by phasis68 (Heesob Park) at [ruby-core:44381]. [Bug #6303] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35352 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ dln.c | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index f95f8d340d..9f0cd8e342 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Apr 16 21:25:24 2012 Nobuyoshi Nakada + + * dln.c (rb_w32_check_imported): skip ordinal entries. patched by + phasis68 (Heesob Park) at [ruby-core:44381]. [Bug #6303] + Mon Apr 16 18:22:14 2012 NARUSE, Yui * spec/default.mspec: expand relative path for ruby_exe which uses diff --git a/dln.c b/dln.c index 6e472f08b9..c2ca0a6072 100644 --- a/dln.c +++ b/dln.c @@ -1215,9 +1215,13 @@ rb_w32_check_imported(HMODULE ext, HMODULE mine) PIMAGE_THUNK_DATA pint = (PIMAGE_THUNK_DATA)((char *)ext + desc->Characteristics); PIMAGE_THUNK_DATA piat = (PIMAGE_THUNK_DATA)((char *)ext + desc->FirstThunk); while (piat->u1.Function) { - PIMAGE_IMPORT_BY_NAME pii = (PIMAGE_IMPORT_BY_NAME)((char *)ext + (size_t)pint->u1.AddressOfData); static const char prefix[] = "rb_"; - const char *name = (const char *)pii->Name; + PIMAGE_IMPORT_BY_NAME pii; + const char *name; + + if (IMAGE_SNAP_BY_ORDINAL(pint->u1.Ordinal)) continue; + pii = (PIMAGE_IMPORT_BY_NAME)((char *)ext + (size_t)pint->u1.AddressOfData); + name = (const char *)pii->Name; if (strncmp(name, prefix, sizeof(prefix) - 1) == 0) { FARPROC addr = GetProcAddress(mine, name); if (addr) return (FARPROC)piat->u1.Function == addr;