Yasuo Ohgaki wrote:
> Yasuo Ohgaki wrote:
> 
>> Christian Stocker wrote:
>>
>>> another little thingie: the description to open_basedir in the 
>>> distributed
>>> php.ini is between all the safe_mode config, therfore maybe a lot of
>>> people don't know, that one can use this whithout safe_mode enabled.
>>>
>>
>> I agree. The directive name should be "safe_mode_open_dasedir"
>> in first place...
>>
>> I added note to php.ini-*
>>
>>
> 
> I didn't realized how open_basedir works and sander
> pointed out. Thanks Sander.
> 
> Anyway, php_checkuid() does not check open_basedir and
> I immediately noticed user bypass open_basedir with
> pg_lo_import(). I guess there are many functions like
> pg_lo_import().
> 

I've commited fixes to pgsql.c, and also
take a look at file.c and it seems sevral functions
do not check safe_mode and open_basedir yet.
(safe_mode/open_basedir could be faked by db command,
etc anyway, though...)

Is there reason why these functions don't check safe_mode
and open_basedir?

I don't have much time to test, so I didn't committed this
patch...

--
Yasuo Ohgaki

/usr/bin/diff: conflicting specifications of output style
--- file.c.~1.239.~     Sun Jul 14 09:14:16 2002
+++ file.c      Wed Jul 17 14:37:02 2002
@@ -261,7 +261,13 @@
                                                          &filename, &filename_len, 
&use_include_path) == FAILURE) {
                return;
        }
-
+       if (PG(safe_mode) && (!php_checkuid(filename, NULL, 
+CHECKUID_CHECK_FILE_AND_DIR))) {
+               RETURN_FALSE;
+       }
+       if (php_check_open_basedir(filename TSRMLS_CC)) {
+               RETURN_FALSE;
+       }
+       
        php_stream_open_wrapper(filename, "rb", 0, NULL);
 
        md.stream = php_stream_open_wrapper(filename, "rb",
@@ -411,6 +417,13 @@
                return;
        }
 
+       if (PG(safe_mode) && (!php_checkuid(filename, NULL, 
+CHECKUID_CHECK_FILE_AND_DIR))) {
+               RETURN_FALSE;
+       }
+       if (php_check_open_basedir(filename TSRMLS_CC)) {
+               RETURN_FALSE;
+       }
+       
        stream = php_stream_open_wrapper(filename, "rb", 
                        use_include_path | ENFORCE_SAFE_MODE | REPORT_ERRORS,
                        NULL);
@@ -457,6 +470,13 @@
                                                          &filename, &filename_len, 
&use_include_path) == FAILURE) {
                return;
        }
+       if (PG(safe_mode) && (!php_checkuid(filename, NULL, 
+CHECKUID_CHECK_FILE_AND_DIR))) {
+               RETURN_FALSE;
+       }
+       if (php_check_open_basedir(filename TSRMLS_CC)) {
+               RETURN_FALSE;
+       }
+
 
        stream = php_stream_open_wrapper(filename, "rb", 
                        use_include_path | ENFORCE_SAFE_MODE | REPORT_ERRORS,
@@ -526,6 +546,9 @@
        convert_to_string_ex(arg1);
        convert_to_string_ex(arg2);
 
+       if (PG(safe_mode) && (!php_checkuid(Z_STRVAL_PP(arg1), NULL, 
+CHECKUID_ONLY_DIR))) {
+               RETURN_FALSE;
+       }
        if (php_check_open_basedir(Z_STRVAL_PP(arg1) TSRMLS_CC)) {
                RETURN_FALSE;
        }
@@ -806,6 +829,13 @@
                                &mode, &mode_len, &use_include_path, &zcontext) == 
FAILURE) {
                RETURN_FALSE;
        }
+       if (PG(safe_mode) && (!php_checkuid(filename, NULL, 
+CHECKUID_CHECK_FILE_AND_DIR))) {
+               RETURN_FALSE;
+       }
+       if (php_check_open_basedir(filename TSRMLS_CC)) {
+               RETURN_FALSE;
+       }
+       
        if (zcontext) {
                context = (php_stream_context*)zend_fetch_resource(&zcontext 
TSRMLS_CC, -1, "Stream-Context", NULL, 1, le_stream_context);
                ZEND_VERIFY_RESOURCE(context);
@@ -1581,6 +1611,14 @@
                WRONG_PARAM_COUNT;
        }
        convert_to_string_ex(arg1);
+
+       if (PG(safe_mode) && (!php_checkuid(Z_STRVAL_PP(arg1), NULL, 
+CHECKUID_CHECK_FILE_AND_DIR))) {
+               RETURN_FALSE;
+       }
+
+       if (php_check_open_basedir(Z_STRVAL_PP(arg1) TSRMLS_CC)) {
+               RETURN_FALSE;
+       }
 
        stream = php_stream_open_wrapper(Z_STRVAL_PP(arg1), "rb",
                        use_include_path | ENFORCE_SAFE_MODE | REPORT_ERRORS,

-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to