iliaa Sun Sep 22 14:30:38 2002 EDT Modified files: /php4/main fopen_wrappers.c Log: Fixed bug #19395 Index: php4/main/fopen_wrappers.c diff -u php4/main/fopen_wrappers.c:1.147 php4/main/fopen_wrappers.c:1.148 --- php4/main/fopen_wrappers.c:1.147 Mon Sep 9 06:56:28 2002 +++ php4/main/fopen_wrappers.c Sun Sep 22 14:30:38 2002 @@ -16,7 +16,7 @@ | Jim Winstead <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: fopen_wrappers.c,v 1.147 2002/09/09 10:56:28 hyanantha Exp $ */ +/* $Id: fopen_wrappers.c,v 1.148 2002/09/22 18:30:38 iliaa Exp $ */ /* {{{ includes */ @@ -107,6 +107,7 @@ char resolved_basedir[MAXPATHLEN]; char local_open_basedir[MAXPATHLEN]; int local_open_basedir_pos; + int resolved_basedir_len; /* Special case basedir==".": Use script-directory */ if ((strcmp(basedir, ".") == 0) && @@ -128,11 +129,20 @@ /* Resolve the real path into resolved_name */ if ((expand_filepath(path, resolved_name TSRMLS_CC) != NULL) && (expand_filepath(local_open_basedir, resolved_basedir TSRMLS_CC) != NULL)) { + /* Handler for basedirs that end with a / */ + if (basedir[strlen(basedir)-1] == PHP_DIR_SEPARATOR) { + resolved_basedir_len = strlen(resolved_basedir); + resolved_basedir[resolved_basedir_len] = '/'; + resolved_basedir[++resolved_basedir_len] = '\0'; + } else { + resolved_basedir_len = strlen(resolved_basedir); + } + /* Check the path */ #ifdef PHP_WIN32 - if (strncasecmp(resolved_basedir, resolved_name, strlen(resolved_basedir)) == 0) { + if (strncasecmp(resolved_basedir, resolved_name, resolved_basedir_len) +== 0) { #else - if (strncmp(resolved_basedir, resolved_name, strlen(resolved_basedir)) == 0) { + if (strncmp(resolved_basedir, resolved_name, resolved_basedir_len) == +0) { #endif /* File is in the right directory */ return 0;
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php