cvs: php-src(PHP_5_2) / NEWS /ext/curl interface.c php_curl.h

From: Date: Tue, 26 May 2009 15:50:44 +0000
Subject: cvs: php-src(PHP_5_2) / NEWS /ext/curl interface.c php_curl.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-58254@lists.php.net to get a copy of this message
jani Tue May 26 15:50:44 2009 UTC Modified files: (Branch: PHP_5_2) /php-src NEWS /php-src/ext/curl interface.c php_curl.h Log: MFH:- Fixed bug #48203 (Crash when CURLOPT_STDERR is set to regular file) http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.1523&r2=1.2027.2.547.2.1524&diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.547.2.1523 php-src/NEWS:1.2027.2.547.2.1524 --- php-src/NEWS:1.2027.2.547.2.1523 Tue May 26 14:38:34 2009 +++ php-src/NEWS Tue May 26 15:50:43 2009 @@ -37,6 +37,7 @@ with RecursiveIteratorIterator leads to a segfault). (Scott) - Fixed bug #48204 (xmlwriter_open_uri() does not emit warnings on invalid paths). (Ilia) +- Fixed bug #48203 (Crash when CURLOPT_STDERR is set to regular file). (Jani) - Fixed bug #48202 (Out of Memory error message when passing invalid file path) (Pierre) - Fixed bug #48156 (Added support for lcov v1.7). (Ilia) http://cvs.php.net/viewvc.cgi/php-src/ext/curl/interface.c?r1=1.62.2.14.2.50&r2=1.62.2.14.2.51&diff_format=u Index: php-src/ext/curl/interface.c diff -u php-src/ext/curl/interface.c:1.62.2.14.2.50 php-src/ext/curl/interface.c:1.62.2.14.2.51 --- php-src/ext/curl/interface.c:1.62.2.14.2.50 Thu May 21 12:53:24 2009 +++ php-src/ext/curl/interface.c Tue May 26 15:50:44 2009 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: interface.c,v 1.62.2.14.2.50 2009/05/21 12:53:24 iliaa Exp $ */ +/* $Id: interface.c,v 1.62.2.14.2.51 2009/05/26 15:50:44 jani Exp $ */ #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS @@ -370,7 +370,7 @@ le_curl_multi_handle = zend_register_list_destructors_ex(_php_curl_multi_close, NULL, "curl", module_number); /* See http://curl.haxx.se/lxr/source/docs/libcurl/symbols-in-versions - or curl src/docs/libcurl/symbols-in-versions for a (almost) complete list + or curl src/docs/libcurl/symbols-in-versions for a (almost) complete list of options and which version they were introduced */ /* Constants for curl_setopt() */ @@ -1460,6 +1460,20 @@ ch->handlers->read->fp = fp; ch->handlers->read->fd = Z_LVAL_PP(zvalue); break; + case CURLOPT_STDERR: + if (((php_stream *) what)->mode[0] != 'r') { + if (ch->handlers->stderr) { + zval_ptr_dtor(&ch->handlers->stderr); + } + zval_add_ref(zvalue); + ch->handlers->stderr = *zvalue; + zend_list_addref(Z_LVAL_PP(zvalue)); + } else { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "the provided file handle is not writable"); + RETVAL_FALSE; + return 1; + } + /* break omitted intentionally */ default: error = curl_easy_setopt(ch->cp, option, fp); break; @@ -2046,6 +2060,11 @@ fprintf(stderr, "DTOR CALLED, ch = %x\n", ch); #endif + /* Prevent crash inside cURL if passed file has already been closed */ + if (ch->handlers->stderr && Z_REFCOUNT_P(ch->handlers->stderr) <= 0) { + curl_easy_setopt(ch->cp, CURLOPT_STDERR, stderr); + } + curl_easy_cleanup(ch->cp); #if LIBCURL_VERSION_NUM < 0x071101 zend_llist_clean(&ch->to_free.str); @@ -2068,6 +2087,9 @@ if (ch->handlers->passwd) { zval_ptr_dtor(&ch->handlers->passwd); } + if (ch->handlers->stderr) { + zval_ptr_dtor(&ch->handlers->stderr); + } if (ch->header.str_len > 0) { efree(ch->header.str); } http://cvs.php.net/viewvc.cgi/php-src/ext/curl/php_curl.h?r1=1.44.2.2.2.5&r2=1.44.2.2.2.6&diff_format=u Index: php-src/ext/curl/php_curl.h diff -u php-src/ext/curl/php_curl.h:1.44.2.2.2.5 php-src/ext/curl/php_curl.h:1.44.2.2.2.6 --- php-src/ext/curl/php_curl.h:1.44.2.2.2.5 Wed Dec 31 11:17:36 2008 +++ php-src/ext/curl/php_curl.h Tue May 26 15:50:44 2009 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_curl.h,v 1.44.2.2.2.5 2008/12/31 11:17:36 sebastian Exp $ */ +/* $Id: php_curl.h,v 1.44.2.2.2.6 2009/05/26 15:50:44 jani Exp $ */ #ifndef _PHP_CURL_H #define _PHP_CURL_H @@ -101,6 +101,7 @@ php_curl_write *write_header; php_curl_read *read; zval *passwd; + zval *stderr; } php_curl_handlers; struct _php_curl_error {

« previous php.cvs (#58254) next »