tony2001 Mon Feb 26 09:14:41 2007 UTC
Modified files: (Branch: PHP_4_4)
/php-src NEWS
/php-src/ext/curl curl.c
Log:
fix #40635 (segfault in cURL extension)
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.1247.2.920.2.199&r2=1.1247.2.920.2.200&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.1247.2.920.2.199 php-src/NEWS:1.1247.2.920.2.200
--- php-src/NEWS:1.1247.2.920.2.199 Fri Feb 23 20:53:23 2007
+++ php-src/NEWS Mon Feb 26 09:14:40 2007
@@ -2,6 +2,7 @@
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? Feb 2007, Version 4.4.6
+- Fixed bug #40635 (segfault in cURL extension). (Tony)
- Fixed bug #40611 (possible cURL memory error). (Tony)
22 Feb 2007, Version 4.4.6RC1
http://cvs.php.net/viewvc.cgi/php-src/ext/curl/curl.c?r1=1.124.2.30.2.17&r2=1.124.2.30.2.18&diff_format=u
Index: php-src/ext/curl/curl.c
diff -u php-src/ext/curl/curl.c:1.124.2.30.2.17
php-src/ext/curl/curl.c:1.124.2.30.2.18
--- php-src/ext/curl/curl.c:1.124.2.30.2.17 Fri Feb 23 20:53:24 2007
+++ php-src/ext/curl/curl.c Mon Feb 26 09:14:41 2007
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: curl.c,v 1.124.2.30.2.17 2007/02/23 20:53:24 tony2001 Exp $ */
+/* $Id: curl.c,v 1.124.2.30.2.18 2007/02/26 09:14:41 tony2001 Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -1266,8 +1266,9 @@
return;
}
- if (ch->handlers->write->buf.len) {
- memset(&ch->handlers->write->buf, 0, sizeof(smart_str));
+ if (ch->handlers->write->buf.len > 0) {
+ smart_str_free(&ch->handlers->write->buf);
+ ch->handlers->write->buf.len = 0;
}
memset(ch->err.str, 0, CURL_ERROR_SIZE + 1);
@@ -1297,6 +1298,7 @@
if (error != CURLE_OK && error != CURLE_PARTIAL_FILE) {
if (ch->handlers->write->buf.len > 0) {
smart_str_free(&ch->handlers->write->buf);
+ ch->handlers->write->buf.len = 0;
}
RETURN_FALSE;
@@ -1306,9 +1308,10 @@
if (ch->handlers->write->method == PHP_CURL_RETURN &&
ch->handlers->write->buf.len > 0) {
--ch->uses;
- if (ch->handlers->write->type != PHP_CURL_BINARY)
+ if (ch->handlers->write->type != PHP_CURL_BINARY) {
smart_str_0(&ch->handlers->write->buf);
- RETURN_STRINGL(ch->handlers->write->buf.c,
ch->handlers->write->buf.len, 0);
+ }
+ RETURN_STRINGL(ch->handlers->write->buf.c,
ch->handlers->write->buf.len, 1);
}
--ch->uses;
if (ch->handlers->write->method == PHP_CURL_RETURN) {
@@ -1533,6 +1536,10 @@
zend_llist_clean(&ch->to_free.slist);
zend_llist_clean(&ch->to_free.post);
+ if (ch->handlers->write->buf.len > 0) {
+ smart_str_free(&ch->handlers->write->buf);
+ ch->handlers->write->buf.len = 0;
+ }
if (ch->handlers->write->func) {
FREE_ZVAL(ch->handlers->write->func);
ch->handlers->read->func = NULL;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php