]> granicus.if.org Git - php/commitdiff
SAFE_MODE restriction error message fixed if the file doesn't exist
authorStefan Esser <sesser@php.net>
Sun, 17 Mar 2002 21:00:44 +0000 (21:00 +0000)
committerStefan Esser <sesser@php.net>
Sun, 17 Mar 2002 21:00:44 +0000 (21:00 +0000)
main/safe_mode.c

index f4f30d0e2fcc7813f5e5f6e8116b7a84df3a792a..d3ffab6a3f161507138503723b23d1a7357f14ff 100644 (file)
@@ -46,7 +46,7 @@
 PHPAPI int php_checkuid(const char *filename, char *fopen_mode, int mode)
 {
        struct stat sb;
-       int ret;
+       int ret, nofile=0;
        long uid=0L, gid=0L, duid=0L, dgid=0L;
        char path[MAXPATHLEN];
        char *s;
@@ -86,6 +86,7 @@ PHPAPI int php_checkuid(const char *filename, char *fopen_mode, int mode)
                                php_error(E_WARNING, "Unable to access %s", filename);
                                return 1;
                        }
+                       nofile = 1;
                } else {
                        uid = sb.st_uid;
                        gid = sb.st_gid;
@@ -150,6 +151,13 @@ PHPAPI int php_checkuid(const char *filename, char *fopen_mode, int mode)
                        *s = 0;
                }
        }
+       
+       if (nofile) {
+               uid = duid;
+               gid = dgid;
+               filename = path;
+       }
+       
        if (PG(safe_mode_gid)) {
                php_error(E_WARNING, "SAFE MODE Restriction in effect.  The script whose uid/gid is %ld/%ld is not allowed to access %s owned by uid/gid %ld/%ld", php_getuid(), php_getgid(), filename, uid, gid);
        } else {