module: fix pointer reference to out-of-scope variable

Reported by Tom Hughes.
v0.7.4-release
Ben Noordhuis 2011-08-14 01:25:39 +02:00
parent e8d268fd5f
commit 5e37e10e41
1 changed files with 5 additions and 1 deletions

View File

@ -1574,6 +1574,7 @@ typedef void (*extInit)(Handle<Object> exports);
// DLOpen is node.dlopen(). Used to load 'module.node' dynamically shared // DLOpen is node.dlopen(). Used to load 'module.node' dynamically shared
// objects. // objects.
Handle<Value> DLOpen(const v8::Arguments& args) { Handle<Value> DLOpen(const v8::Arguments& args) {
node_module_struct compat_mod;
HandleScope scope; HandleScope scope;
if (args.Length() < 2) return Undefined(); if (args.Length() < 2) return Undefined();
@ -1616,10 +1617,13 @@ Handle<Value> DLOpen(const v8::Arguments& args) {
// Get the init() function from the dynamically shared object. // Get the init() function from the dynamically shared object.
node_module_struct *mod = static_cast<node_module_struct *>(dlsym(handle, symstr)); node_module_struct *mod = static_cast<node_module_struct *>(dlsym(handle, symstr));
free(symstr); free(symstr);
symstr = NULL;
// Error out if not found. // Error out if not found.
if (mod == NULL) { if (mod == NULL) {
/* Start Compatibility hack: Remove once everyone is using NODE_MODULE macro */ /* Start Compatibility hack: Remove once everyone is using NODE_MODULE macro */
node_module_struct compat_mod; memset(&compat_mod, 0, sizeof compat_mod);
mod = &compat_mod; mod = &compat_mod;
mod->version = NODE_MODULE_VERSION; mod->version = NODE_MODULE_VERSION;