tony2001 Thu Apr 13 11:26:10 2006 UTC Modified files: (Branch: PHP_5_1) /php-src NEWS /php-src/ext/curl interface.c multi.c Log: fix bug #37061 (curl_exec() doesn't zero-terminate binary strings) - we get the data length from cURL, so it's binary safe. fix leak appearing when re-using curl handle http://cvs.php.net/viewcvs.cgi/php-src/NEWS?r1=1.2027.2.512&r2=1.2027.2.513&diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.512 php-src/NEWS:1.2027.2.513 --- php-src/NEWS:1.2027.2.512 Thu Apr 13 08:18:36 2006 +++ php-src/NEWS Thu Apr 13 11:26:10 2006 @@ -1,6 +1,7 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? Apr 2006, PHP 5.1.3 +- Fixed bug #37061 (curl_exec() doesn't zero-terminate binary strings). (Tony) - Fixed bug #37060 (Type of retval of Countable::count() is not checked). (Johannes) - FIxed bug #37059 (oci_bind_by_name() doesn't support RAW and LONG RAW http://cvs.php.net/viewcvs.cgi/php-src/ext/curl/interface.c?r1=1.62.2.13&r2=1.62.2.14&diff_format=u Index: php-src/ext/curl/interface.c diff -u php-src/ext/curl/interface.c:1.62.2.13 php-src/ext/curl/interface.c:1.62.2.14 --- php-src/ext/curl/interface.c:1.62.2.13 Thu Jan 26 13:23:33 2006 +++ php-src/ext/curl/interface.c Thu Apr 13 11:26:10 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: interface.c,v 1.62.2.13 2006/01/26 13:23:33 mike Exp $ */ +/* $Id: interface.c,v 1.62.2.14 2006/04/13 11:26:10 tony2001 Exp $ */ #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS @@ -1208,6 +1208,8 @@ if (Z_LVAL_PP(zvalue)) { ch->handlers->write->type = PHP_CURL_BINARY; + } else { + ch->handlers->write->type = PHP_CURL_ASCII; } break; case CURLOPT_WRITEFUNCTION: @@ -1462,7 +1464,7 @@ void _php_curl_cleanup_handle(php_curl *ch) { if (ch->handlers->write->buf.len > 0) { - memset(&ch->handlers->write->buf, 0, sizeof(smart_str)); + smart_str_free(&ch->handlers->write->buf); } if (ch->header.str_len) { efree(ch->header.str); @@ -1497,7 +1499,6 @@ if (ch->handlers->write->buf.len > 0) { smart_str_free(&ch->handlers->write->buf); } - RETURN_FALSE; } @@ -1505,10 +1506,8 @@ if (ch->handlers->write->method == PHP_CURL_RETURN && ch->handlers->write->buf.len > 0) { --ch->uses; - 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); + smart_str_0(&ch->handlers->write->buf); + RETURN_STRINGL(ch->handlers->write->buf.c, ch->handlers->write->buf.len, 1); } --ch->uses; RETURN_TRUE; @@ -1739,6 +1738,9 @@ 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); + } if (ch->handlers->write->func_name) { zval_ptr_dtor(&ch->handlers->write->func_name); } @@ -1754,7 +1756,7 @@ if (ch->header.str_len > 0) { efree(ch->header.str); } - + efree(ch->handlers->write); efree(ch->handlers->write_header); efree(ch->handlers->read); http://cvs.php.net/viewcvs.cgi/php-src/ext/curl/multi.c?r1=1.19.2.2&r2=1.19.2.3&diff_format=u Index: php-src/ext/curl/multi.c diff -u php-src/ext/curl/multi.c:1.19.2.2 php-src/ext/curl/multi.c:1.19.2.3 --- php-src/ext/curl/multi.c:1.19.2.2 Sun Jan 1 12:50:01 2006 +++ php-src/ext/curl/multi.c Thu Apr 13 11:26:10 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: multi.c,v 1.19.2.2 2006/01/01 12:50:01 sniper Exp $ */ +/* $Id: multi.c,v 1.19.2.3 2006/04/13 11:26:10 tony2001 Exp $ */ #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS @@ -195,11 +195,8 @@ ZEND_FETCH_RESOURCE(ch, php_curl *, &z_ch, -1, le_curl_name, le_curl); if (ch->handlers->write->method == PHP_CURL_RETURN && ch->handlers->write->buf.len > 0) { - 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); + smart_str_0(&ch->handlers->write->buf); + RETURN_STRINGL(ch->handlers->write->buf.c, ch->handlers->write->buf.len, 1); } }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php