iliaa           Thu Jun 19 18:12:21 2003 EDT

  Modified files:              
    /php4/ext/curl      interface.c 
  Log:
  Added missing safe_mode checks.
  Added support for additional libcurl options.
  Set CURLOPT_NOSIGNAL by default for ZTS, for signal free operation.
  
  
Index: php4/ext/curl/interface.c
diff -u php4/ext/curl/interface.c:1.21 php4/ext/curl/interface.c:1.22
--- php4/ext/curl/interface.c:1.21      Wed Jun 18 17:02:02 2003
+++ php4/ext/curl/interface.c   Thu Jun 19 18:12:21 2003
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: interface.c,v 1.21 2003/06/18 21:02:02 sterling Exp $ */
+/* $Id: interface.c,v 1.22 2003/06/19 22:12:21 iliaa Exp $ */
 
 #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
 
@@ -201,8 +201,26 @@
        REGISTER_CURL_CONSTANT(CURLOPT_SSLKEYPASSWD);
        REGISTER_CURL_CONSTANT(CURLOPT_SSLENGINE);
        REGISTER_CURL_CONSTANT(CURLOPT_SSLENGINE_DEFAULT);
+       REGISTER_CURL_CONSTANT(CURLOPT_SSLCERTTYPE);
        REGISTER_CURL_CONSTANT(CURLOPT_CRLF);
        REGISTER_CURL_CONSTANT(CURLOPT_ENCODING);
+       REGISTER_CURL_CONSTANT(CURLOPT_PROXYPORT);
+       REGISTER_CURL_CONSTANT(CURLPROXY_HTTP);
+       REGISTER_CURL_CONSTANT(CURLPROXY_SOCKS5);
+       REGISTER_CURL_CONSTANT(CURLOPT_UNRESTRICTED_AUTH);
+       REGISTER_CURL_CONSTANT(CURLOPT_FTP_USE_EPRT);
+       REGISTER_CURL_CONSTANT(CURLOPT_HTTP200ALIASES);
+
+#ifdef CURLOPT_HTTPAUTH /* only in curl 7.10.6 */
+       REGISTER_CURL_CONSTANT(CURLOPT_HTTPAUTH);
+       /* http authentication options */
+       REGISTER_CURL_CONSTANT(CURLHTTP_BASIC);
+       REGISTER_CURL_CONSTANT(CURLHTTP_DIGEST);
+       REGISTER_CURL_CONSTANT(CURLHTTP_GSSNEGOTIATE);
+       REGISTER_CURL_CONSTANT(CURLHTTP_NTLM);
+       REGISTER_CURL_CONSTANT(CURLHTTP_ANY);
+       REGISTER_CURL_CONSTANT(CURLHTTP_ANYSAFE);
+#endif
        
        /* Constants effecting the way CURLOPT_CLOSEPOLICY works */
        REGISTER_CURL_CONSTANT(CURLCLOSEPOLICY_LEAST_RECENTLY_USED);
@@ -699,6 +717,9 @@
        curl_easy_setopt(ch->cp, CURLOPT_WRITEHEADER,       (void *) ch);
        curl_easy_setopt(ch->cp, CURLOPT_DNS_USE_GLOBAL_CACHE, 1);
        curl_easy_setopt(ch->cp, CURLOPT_DNS_CACHE_TIMEOUT, 120);
+#if defined(ZTS)
+       curl_easy_setopt(ch->cp, CURLOPT_NOSIGNAL, 1);
+#endif
 
        if (argc > 0) {
                char *urlcopy;
@@ -773,6 +794,13 @@
                case CURLOPT_HTTPGET:
                case CURLOPT_HTTP_VERSION:
                case CURLOPT_CRLF:
+               case CURLOPT_DNS_CACHE_TIMEOUT:
+               case CURLOPT_PROXYPORT:
+               case CURLOPT_FTP_USE_EPRT:
+#ifdef CURLOPT_HTTPAUTH /* only in curl 7.10.6 */
+               case CURLOPT_HTTPAUTH:
+#endif
+               case CURLOPT_UNRESTRICTED_AUTH:
                case CURLOPT_PORT:
                        convert_to_long_ex(zvalue);
                        error = curl_easy_setopt(ch->cp, option, Z_LVAL_PP(zvalue));
@@ -786,22 +814,19 @@
                case CURLOPT_USERAGENT:
                case CURLOPT_FTPPORT:
                case CURLOPT_COOKIE:
-               case CURLOPT_COOKIEFILE:
                case CURLOPT_REFERER:
                case CURLOPT_INTERFACE:
                case CURLOPT_KRB4LEVEL: 
-               case CURLOPT_RANDOM_FILE:
                case CURLOPT_EGDSOCKET:
                case CURLOPT_CAINFO: 
                case CURLOPT_CAPATH:
-               case CURLOPT_COOKIEJAR:
                case CURLOPT_SSL_CIPHER_LIST: 
                case CURLOPT_SSLKEY:
-               case CURLOPT_SSLCERT:
                case CURLOPT_SSLKEYTYPE: 
                case CURLOPT_SSLKEYPASSWD: 
                case CURLOPT_SSLENGINE: 
                case CURLOPT_SSLENGINE_DEFAULT:
+               case CURLOPT_SSLCERTTYPE:
                case CURLOPT_ENCODING: {
                        char *copystr = NULL;
        
@@ -969,6 +994,7 @@
                        break;
                case CURLOPT_HTTPHEADER: 
                case CURLOPT_QUOTE:
+               case CURLOPT_HTTP200ALIASES:
                case CURLOPT_POSTQUOTE: {
                        zval              **current;
                        HashTable          *ph;
@@ -976,7 +1002,7 @@
 
                        ph = HASH_OF(*zvalue);
                        if (!ph) {
-                               php_error_docref(NULL TSRMLS_CC, E_WARNING, "You must 
pass either an object or an array with the CURLOPT_HTTPHEADER, CURLOPT_QUOTE and 
CURLOPT_POSTQUOTE arguments");
+                               php_error_docref(NULL TSRMLS_CC, E_WARNING, "You must 
pass either an object or an array with the CURLOPT_HTTPHEADER, CURLOPT_QUOTE, 
CURLOPT_HTTP200ALIASES and CURLOPT_POSTQUOTE arguments");
                                RETURN_FALSE;
                        }
 
@@ -1001,6 +1027,28 @@
                        zend_llist_add_element(&ch->to_free.slist, &slist);
 
                        error = curl_easy_setopt(ch->cp, option, slist);
+
+                       break;
+               }
+               /* the following options deal with files, therefor safe_mode & 
open_basedir checks
+                * are required.
+                */
+               case CURLOPT_COOKIEJAR:
+               case CURLOPT_SSLCERT:
+               case CURLOPT_RANDOM_FILE:
+               case CURLOPT_COOKIEFILE: {
+                       char *copystr = NULL;
+
+                       convert_to_string_ex(zvalue);
+
+                       if (php_check_open_basedir(Z_STRVAL_PP(zvalue) TSRMLS_CC) || 
(PG(safe_mode) && !php_checkuid(Z_STRVAL_PP(zvalue), "rb+", 
CHECKUID_CHECK_MODE_PARAM))) {
+                               RETURN_FALSE;                   
+                       }
+
+                       copystr = estrndup(Z_STRVAL_PP(zvalue), Z_STRLEN_PP(zvalue));
+
+                       error = curl_easy_setopt(ch->cp, option, copystr);
+                       zend_llist_add_element(&ch->to_free.str, &copystr);
 
                        break;
                }



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

Reply via email to