iliaa           Mon Oct 18 18:42:16 2004 EDT

  Modified files:              (Branch: PHP_5_0)
    /php-src    NEWS 
    /php-src/ext/curl   interface.c 
  Log:
  MFH: Fixed bug #30475 (curl_getinfo() may crash in some situations).
  
  
http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1760.2.103&r2=1.1760.2.104&ty=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.1760.2.103 php-src/NEWS:1.1760.2.104
--- php-src/NEWS:1.1760.2.103   Mon Oct 18 11:17:04 2004
+++ php-src/NEWS        Mon Oct 18 18:42:16 2004
@@ -2,6 +2,7 @@
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 ?? ??? 2004, PHP 5.0.3
 - Fixed potential problems with unserializing invalid serialize data. (Marcus)
+- Fixed bug #30475 (curl_getinfo() may crash in some situations). (Ilia)
 - Fixed bug #30442 (segfault when parsing ?getvariable[][ ). (Tony)
 - Fixed bug #30387 (stream_socket_client async connect was broken).
   (vnegrier at esds dot com, Wez).
http://cvs.php.net/diff.php/php-src/ext/curl/interface.c?r1=1.46.2.3&r2=1.46.2.4&ty=u
Index: php-src/ext/curl/interface.c
diff -u php-src/ext/curl/interface.c:1.46.2.3 php-src/ext/curl/interface.c:1.46.2.4
--- php-src/ext/curl/interface.c:1.46.2.3       Fri Aug 20 09:52:47 2004
+++ php-src/ext/curl/interface.c        Mon Oct 18 18:42:16 2004
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: interface.c,v 1.46.2.3 2004/08/20 13:52:47 iliaa Exp $ */
+/* $Id: interface.c,v 1.46.2.4 2004/10/18 22:42:16 iliaa Exp $ */
 
 #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
 
@@ -431,6 +431,7 @@
                        PHPWRITE(data, length);
                        break;
                case PHP_CURL_FILE:
+                       fflush(t->fp);
                        return fwrite(data, size, nmemb, t->fp);
                case PHP_CURL_RETURN:
                        smart_str_appendl(&t->buf, data, (int) length);
@@ -1336,10 +1337,13 @@
                switch (option) {
                        case CURLINFO_EFFECTIVE_URL: 
                        case CURLINFO_CONTENT_TYPE: {
-                               char *s_code;
+                               char *s_code = NULL;
 
-                               curl_easy_getinfo(ch->cp, option, &s_code);
-                               RETURN_STRING(s_code, 1);
+                               if (curl_easy_getinfo(ch->cp, option, &s_code) == 
CURLE_OK && s_code) {
+                                       RETURN_STRING(s_code, 1);
+                               } else {
+                                       RETURN_FALSE;
+                               }
                                break;
                        }
                        case CURLINFO_HTTP_CODE: 
@@ -1348,10 +1352,13 @@
                        case CURLINFO_FILETIME: 
                        case CURLINFO_SSL_VERIFYRESULT: 
                        case CURLINFO_REDIRECT_COUNT: {
-                               long code;
+                               long code = 0;
 
-                               curl_easy_getinfo(ch->cp, option, &code);
-                               RETURN_LONG(code);
+                               if (curl_easy_getinfo(ch->cp, option, &code) == 
CURLE_OK) {
+                                       RETURN_LONG(code);
+                               } else {
+                                       RETURN_FALSE;
+                               }
                                break;
                        }
                        case CURLINFO_TOTAL_TIME: 
@@ -1366,10 +1373,13 @@
                        case CURLINFO_CONTENT_LENGTH_UPLOAD: 
                        case CURLINFO_STARTTRANSFER_TIME:
                        case CURLINFO_REDIRECT_TIME: {
-                               double code;
+                               double code = 0.0;
 
-                               curl_easy_getinfo(ch->cp, option, &code);
-                               RETURN_DOUBLE(code);
+                               if (curl_easy_getinfo(ch->cp, option, &code) == 
CURLE_OK) {
+                                       RETURN_DOUBLE(code);
+                               } else {
+                                       RETURN_FALSE;
+                               }
                                break;
                        }
                }

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

Reply via email to