]> granicus.if.org Git - php/commitdiff
fix regression introduced by 0782a7fc6314c8bd3cbfd57f12d0479bf9cc8dc7
authorAnatol Belski <ab@php.net>
Mon, 17 Jul 2017 22:35:01 +0000 (00:35 +0200)
committerAnatol Belski <ab@php.net>
Mon, 17 Jul 2017 22:35:01 +0000 (00:35 +0200)
ext/standard/dl.c

index d32f02e8e640905868cea23c7a074dd1f5a9d9d0..1739648ffa57169e6fb7ee7fe696bb310e90d3ba 100644 (file)
@@ -110,8 +110,9 @@ PHPAPI int php_load_extension(char *filename, int type, int start_now)
        char *libpath;
        zend_module_entry *module_entry;
        zend_module_entry *(*get_module)(void);
-       int error_type, slash_suffix;
+       int error_type, slash_suffix = NULL;
        char *extension_dir;
+       char *err1, *err2;
 
        if (type == MODULE_PERSISTENT) {
                extension_dir = INI_STR("extension_dir");
@@ -135,7 +136,6 @@ PHPAPI int php_load_extension(char *filename, int type, int start_now)
                libpath = estrdup(filename);
        } else if (extension_dir && extension_dir[0]) {
                int extension_dir_len = (int)strlen(extension_dir);
-               char *err1, *err2;
                slash_suffix = IS_SLASH(extension_dir[extension_dir_len-1]);
                /* Try as filename first */
                if (slash_suffix) {
@@ -143,33 +143,33 @@ PHPAPI int php_load_extension(char *filename, int type, int start_now)
                } else {
                        spprintf(&libpath, 0, "%s%c%s", extension_dir, DEFAULT_SLASH, filename); /* SAFE */
                }
+       } else {
+               return FAILURE; /* Not full path given or extension_dir is not set */
+       }
+
+       handle = php_load_shlib(libpath, &err1);
+       if (!handle) {
+               /* Now, consider 'filename' as extension name and build file name */
+               char *orig_libpath = libpath;
+
+               if (slash_suffix) {
+                       spprintf(&libpath, 0, "%s" PHP_SHLIB_EXT_PREFIX "%s." PHP_SHLIB_SUFFIX, extension_dir, filename); /* SAFE */
+               } else {
+                       spprintf(&libpath, 0, "%s%c" PHP_SHLIB_EXT_PREFIX "%s." PHP_SHLIB_SUFFIX, extension_dir, DEFAULT_SLASH, filename); /* SAFE */
+               }
 
-               handle = php_load_shlib(libpath, &err1);
+               handle = php_load_shlib(libpath, &err2);
                if (!handle) {
-                       /* Now, consider 'filename' as extension name and build file name */
-                       char *orig_libpath = libpath;
-
-                       if (slash_suffix) {
-                               spprintf(&libpath, 0, "%s" PHP_SHLIB_EXT_PREFIX "%s." PHP_SHLIB_SUFFIX, extension_dir, filename); /* SAFE */
-                       } else {
-                               spprintf(&libpath, 0, "%s%c" PHP_SHLIB_EXT_PREFIX "%s." PHP_SHLIB_SUFFIX, extension_dir, DEFAULT_SLASH, filename); /* SAFE */
-                       }
-
-                       handle = php_load_shlib(libpath, &err2);
-                       if (!handle) {
-                               php_error_docref(NULL, error_type, "Unable to load dynamic library '%s' (tried: %s (%s), %s (%s))",
-                                       filename, orig_libpath, err1, libpath, err2);
-                               efree(orig_libpath);
-                               efree(err1);
-                               efree(libpath);
-                               efree(err2);
-                               return FAILURE;
-                       }
+                       php_error_docref(NULL, error_type, "Unable to load dynamic library '%s' (tried: %s (%s), %s (%s))",
+                               filename, orig_libpath, err1, libpath, err2);
                        efree(orig_libpath);
                        efree(err1);
+                       efree(libpath);
+                       efree(err2);
+                       return FAILURE;
                }
-       } else {
-               return FAILURE; /* Not full path given or extension_dir is not set */
+               efree(orig_libpath);
+               efree(err1);
        }
 
        efree(libpath);