From 6bbf0105af9a1e9f5e647df897179497dca63b86 Mon Sep 17 00:00:00 2001 From: Zeev Suraski Date: Mon, 12 Jun 2000 21:01:03 +0000 Subject: [PATCH] Fix a bug in extension_dir, where PG(extension_dir) is not yet initialized by the time php_dl() is called --- ext/standard/dl.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/ext/standard/dl.c b/ext/standard/dl.c index 0da5875d9e..bf3c1af007 100644 --- a/ext/standard/dl.c +++ b/ext/standard/dl.c @@ -88,24 +88,35 @@ void php_dl(pval *file, int type, pval *return_value) zend_module_entry *module_entry,*tmp; zend_module_entry *(*get_module)(void); int error_type; + char *extension_dir; PLS_FETCH(); ELS_FETCH(); + + if (type==MODULE_PERSISTENT) { + /* Use the configuration hash directly */ + if (cfg_get_string("extension_dir", &extension_dir)==FAILURE) { + extension_dir = NULL; + } + } else { + extension_dir = PG(extension_dir); + } + if (type==MODULE_TEMPORARY) { error_type = E_WARNING; } else { error_type = E_CORE_WARNING; } - if (PG(extension_dir) && PG(extension_dir)[0]){ - int extension_dir_len = strlen(PG(extension_dir)); + if (extension_dir && extension_dir[0]){ + int extension_dir_len = strlen(extension_dir); libpath = emalloc(extension_dir_len+file->value.str.len+2); - if (IS_SLASH(PG(extension_dir)[extension_dir_len-1])) { - sprintf(libpath,"%s%s", PG(extension_dir), file->value.str.val); /* SAFE */ + if (IS_SLASH(extension_dir[extension_dir_len-1])) { + sprintf(libpath,"%s%s", extension_dir, file->value.str.val); /* SAFE */ } else { - sprintf(libpath,"%s/%s", PG(extension_dir), file->value.str.val); /* SAFE */ + sprintf(libpath,"%s/%s", extension_dir, file->value.str.val); /* SAFE */ } } else { libpath = estrndup(file->value.str.val, file->value.str.len); -- 2.50.1