summaryrefslogtreecommitdiff
path: root/ext/standard/http_fopen_wrapper.c
diff options
context:
space:
mode:
authorStanislav Malyshev <stas@php.net>2015-04-14 01:20:31 -0700
committerStanislav Malyshev <stas@php.net>2015-04-14 01:28:06 -0700
commitb3709bfc52fa60acef1376dbff9ec09f52ed8a5a (patch)
treebff6fc91f50d11fcf9e4f6c3f6a9321aca3a305d /ext/standard/http_fopen_wrapper.c
parentcddb5eb3e9ff3af9fdff8b849bae67e4d3c7bd03 (diff)
parent5776fceb16597d9ce686a01c1b72eac155b9741b (diff)
downloadphp-git-b3709bfc52fa60acef1376dbff9ec09f52ed8a5a.tar.gz
Merge branch 'PHP-5.6'
* PHP-5.6: (27 commits) fix non-standard C update NEWS 5.4.41 next fix CVE num update NEWS Fix bug #69441 (Buffer Overflow when parsing tar/zip/phar in phar_set_inode) fix test fix type in fix for #69085 fix memory leak & add test Fix tests fix CVE num Fix bug #69337 (php_stream_url_wrap_http_ex() type-confusion vulnerability) Fix test Additional fix for bug #69324 More fixes for bug #69152 Fixed bug #69353 (Missing null byte checks for paths in various PHP extensions) Fixed bug #69324 (Buffer Over-read in unserialize when parsing Phar) Fixed bug #69316 (Use-after-free in php_curl related to CURLOPT_FILE/_INFILE/_WRITEHEADER) Fix bug #68486 and bug #69218 (segfault in apache2handler with apache 2.4) Fix bug #68819 (Fileinfo on specific file causes spurious OOM and/or segfault) ... Conflicts: Zend/zend_exceptions.c ext/curl/interface.c ext/dom/document.c ext/fileinfo/libmagic/softmagic.c ext/gd/gd.c ext/hash/hash.c ext/pgsql/pgsql.c ext/phar/phar.c ext/phar/phar_internal.h ext/standard/http_fopen_wrapper.c ext/standard/link.c ext/standard/streamsfuncs.c ext/xmlwriter/php_xmlwriter.c ext/zlib/zlib.c
Diffstat (limited to 'ext/standard/http_fopen_wrapper.c')
-rw-r--r--ext/standard/http_fopen_wrapper.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/ext/standard/http_fopen_wrapper.c b/ext/standard/http_fopen_wrapper.c
index 457e806440..d5724fed30 100644
--- a/ext/standard/http_fopen_wrapper.c
+++ b/ext/standard/http_fopen_wrapper.c
@@ -670,6 +670,7 @@ finish:
}
response_header = zend_hash_str_find_ind(symbol_table, "http_response_header", sizeof("http_response_header")-1);
+ Z_ADDREF_P(response_header);
if (!php_stream_eof(stream)) {
size_t tmp_line_len;
@@ -905,6 +906,10 @@ out:
if (stream) {
if (header_init) {
ZVAL_COPY(&stream->wrapperdata, response_header);
+ } else {
+ if(response_header) {
+ Z_DELREF_P(response_header);
+ }
}
php_stream_notify_progress_init(context, 0, file_size);
@@ -925,8 +930,13 @@ out:
if (transfer_encoding) {
php_stream_filter_append(&stream->readfilters, transfer_encoding);
}
- } else if (transfer_encoding) {
- php_stream_filter_free(transfer_encoding);
+ } else {
+ if(response_header) {
+ Z_DELREF_P(response_header);
+ }
+ if (transfer_encoding) {
+ php_stream_filter_free(transfer_encoding);
+ }
}
return stream;