pajoye          Thu Apr 16 13:51:55 2009 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src/ext/curl   interface.c 
  Log:
  - improve file:// deactivation in curl_init and do not allow to enable it 
again manually
  
http://cvs.php.net/viewvc.cgi/php-src/ext/curl/interface.c?r1=1.62.2.14.2.44&r2=1.62.2.14.2.45&diff_format=u
Index: php-src/ext/curl/interface.c
diff -u php-src/ext/curl/interface.c:1.62.2.14.2.44 
php-src/ext/curl/interface.c:1.62.2.14.2.45
--- php-src/ext/curl/interface.c:1.62.2.14.2.44 Thu Apr 16 09:47:33 2009
+++ php-src/ext/curl/interface.c        Thu Apr 16 13:51:55 2009
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: interface.c,v 1.62.2.14.2.44 2009/04/16 09:47:33 pajoye Exp $ */
+/* $Id: interface.c,v 1.62.2.14.2.45 2009/04/16 13:51:55 pajoye Exp $ */
 
 #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
 
@@ -147,6 +147,7 @@
 #endif
 /* }}} */
 
+static void _php_curl_close_ex(php_curl *ch TSRMLS_DC);
 static void _php_curl_close(zend_rsrc_list_entry *rsrc TSRMLS_DC);
 
 #define SAVE_CURL_ERROR(__handle, __err) (__handle)->err.no = (int) __err;
@@ -1170,6 +1171,7 @@
 
        if (argc > 0) {
                if (!php_curl_option_url(ch, Z_STRVAL_PP(url), 
Z_STRLEN_PP(url))) {
+                       _php_curl_close_ex(ch);
                        RETURN_FALSE;
                }
        }
@@ -1331,6 +1333,13 @@
                case CURLOPT_PROTOCOLS:
 #endif
                        convert_to_long_ex(zvalue);
+#if LIBCURL_VERSION_NUM >= 0x71304
+                       if (((PG(open_basedir) && *PG(open_basedir)) || 
PG(safe_mode)) && (Z_LVAL_PP(zvalue) & CURLPROTO_FILE)) {
+                                       php_error_docref(NULL TSRMLS_CC, 
E_WARNING, "CURLPROTO_FILE cannot be activated when in safe_mode or an 
open_basedir is set");
+                                       RETVAL_FALSE;
+                                       return 1;
+                       }
+#endif
                        error = curl_easy_setopt(ch->cp, option, 
Z_LVAL_PP(zvalue));
                        break;
                case CURLOPT_FOLLOWLOCATION:
@@ -2011,10 +2020,8 @@
 
 /* {{{ _php_curl_close()
    List destructor for curl handles */
-static void _php_curl_close(zend_rsrc_list_entry *rsrc TSRMLS_DC)
+static void _php_curl_close_ex(php_curl *ch TSRMLS_DC)
 {
-       php_curl *ch = (php_curl *) rsrc->ptr;
-
 #if PHP_CURL_DEBUG
        fprintf(stderr, "DTOR CALLED, ch = %x\n", ch);
 #endif
@@ -2053,6 +2060,15 @@
 }      
 /* }}} */
 
+/* {{{ _php_curl_close()
+   List destructor for curl handles */
+static void _php_curl_close(zend_rsrc_list_entry *rsrc TSRMLS_DC)
+{
+       php_curl *ch = (php_curl *) rsrc->ptr;
+       _php_curl_close_ex(ch TSRMLS_CC);
+}      
+/* }}} */
+
 #endif /* HAVE_CURL */
 
 /*



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to