]> granicus.if.org Git - php/commitdiff
Restore the check for the trailing slash. Windows does not apply s#/+#/# (PR 4375)
authorZeev Suraski <zeev@php.net>
Fri, 9 Jun 2000 00:43:43 +0000 (00:43 +0000)
committerZeev Suraski <zeev@php.net>
Fri, 9 Jun 2000 00:43:43 +0000 (00:43 +0000)
ext/standard/dl.c

index 1054bdd2f5524fece3201b0396c7393aceed00c3..978ae54e9056b59aba77ae2a618a45c5b862fec2 100644 (file)
@@ -75,6 +75,9 @@ PHP_FUNCTION(dl)
 #define USING_ZTS 0
 #endif
 
+#define IS_SLASH(c)    \
+       (((c)=='/') || ((c)=='\\'))
+
 void php_dl(pval *file,int type,pval *return_value)
 {
        void *handle;
@@ -89,7 +92,11 @@ void php_dl(pval *file,int type,pval *return_value)
 
                libpath = emalloc(extension_dir_len+file->value.str.len+2);
 
-               sprintf(libpath,"%s/%s",PG(extension_dir),file->value.str.val);
+               if (IS_SLASH(PG(extension_dir)[extension_dir_len-1])) {
+                       sprintf(libpath,"%s%s", PG(extension_dir), file->value.str.val); /* SAFE */
+               } else {
+                       sprintf(libpath,"%s/%s", PG(extension_dir), file->value.str.val); /* SAFE */
+               }
        } else {
                libpath = estrndup(file->value.str.val, file->value.str.len);
        }