cvs: php4 /main safe_mode.c
| From: | Jani Taskinen | Date: | Sat, 13 Jul 2002 00:52:18 +0000 |
| Subject: | cvs: php4 /main safe_mode.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-12806@lists.php.net to get a copy of this message | ||
sniper Fri Jul 12 20:52:18 2002 EDT
Modified files:
/php4/main safe_mode.c
Log:
Fix bug: #18285, php_checkuid() mangled the passed path.
Index: php4/main/safe_mode.c
diff -u php4/main/safe_mode.c:1.44 php4/main/safe_mode.c:1.45
--- php4/main/safe_mode.c:1.44 Sun Mar 17 16:00:44 2002
+++ php4/main/safe_mode.c Fri Jul 12 20:52:18 2002
@@ -15,7 +15,7 @@
| Author: Rasmus Lerdorf <rasmus@lerdorf.on.ca> |
+----------------------------------------------------------------------+
*/
-/* $Id: safe_mode.c,v 1.44 2002/03/17 21:00:44 sesser Exp $ */
+/* $Id: safe_mode.c,v 1.45 2002/07/13 00:52:18 sniper Exp $ */
#include "php.h"
@@ -49,9 +49,12 @@
int ret, nofile=0;
long uid=0L, gid=0L, duid=0L, dgid=0L;
char path[MAXPATHLEN];
- char *s;
+ char *s, filenamecopy[MAXPATHLEN];
TSRMLS_FETCH();
+ strlcpy(filenamecopy, filename, MAXPATHLEN);
+ filename=(char *)&filenamecopy;
+
if (!filename) {
return 0; /* path must be provided */
}
@@ -67,7 +70,7 @@
/*
* If given filepath is a URL, allow - safe mode stuff
* related to URL's is checked in individual functions
- */
+ */
if (!strncasecmp(filename,"http://", 7) ||
!strncasecmp(filename,"ftp://", 6)) {
return 1;
}
@@ -116,7 +119,7 @@
VCWD_REALPATH(filename, path);
*s = DEFAULT_SLASH;
} else {
- VCWD_GETCWD(path, MAXPATHLEN);
+ VCWD_GETCWD(path, sizeof(path));
}
} /* end CHECKUID_ALLOW_ONLY_DIR */