]> granicus.if.org Git - php/commitdiff
remove casts and ensure no out of bounds access
authorAnatol Belski <ab@php.net>
Fri, 21 Jul 2017 20:26:37 +0000 (22:26 +0200)
committerAnatol Belski <ab@php.net>
Fri, 21 Jul 2017 20:26:37 +0000 (22:26 +0200)
ext/standard/dl.c
main/php_ini.c

index 1739648ffa57169e6fb7ee7fe696bb310e90d3ba..f7407927a9701f8763263e938fa14a5e590159b1 100644 (file)
@@ -135,8 +135,7 @@ 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);
-               slash_suffix = IS_SLASH(extension_dir[extension_dir_len-1]);
+               slash_suffix = IS_SLASH(extension_dir[strlen(extension_dir)-1]);
                /* Try as filename first */
                if (slash_suffix) {
                        spprintf(&libpath, 0, "%s%s", extension_dir, filename); /* SAFE */
index 4e013c8acabba1232ba78761a2047bf739db4dfb..7b0375027d821d18aa81cb86b25623a7ec70f0b3 100644 (file)
@@ -353,7 +353,7 @@ static void php_load_php_extension_cb(void *arg)
 static void php_load_zend_extension_cb(void *arg)
 {
        char *filename = *((char **) arg);
-       const int length = (int)strlen(filename);
+       const size_t length = strlen(filename);
 
 #ifndef PHP_WIN32
        (void) length;
@@ -365,9 +365,13 @@ static void php_load_zend_extension_cb(void *arg)
                DL_HANDLE handle;
                char *libpath;
                char *extension_dir = INI_STR("extension_dir");
-               int extension_dir_len = (int)strlen(extension_dir);
-               int slash_suffix = IS_SLASH(extension_dir[extension_dir_len-1]);
+               int slash_suffix = 0;
                char *err1, *err2;
+
+               if (extension_dir && extension_dir[0]) {
+                       slash_suffix = IS_SLASH(extension_dir[strlen(extension_dir)-1]);
+               }
+
                /* Try as filename first */
                if (slash_suffix) {
                        spprintf(&libpath, 0, "%s%s", extension_dir, filename); /* SAFE */