]> granicus.if.org Git - php/commitdiff
Avoid uninit warnin in http_fopen_wrapper
authorNikita Popov <nikita.ppv@gmail.com>
Fri, 12 Apr 2019 13:00:55 +0000 (15:00 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 12 Apr 2019 13:12:39 +0000 (15:12 +0200)
This one looks semi-legit, in case php_stream_eof() returns false
but php_stream_get_line() fails. Not totally sure this cannot
happen, so rewriting to check both conditions at once.

ext/standard/http_fopen_wrapper.c

index 611cbccdbea90db0f8d4c1d0c9be4f58999691de..b01aed1e96ba287be93a19defd5e559e82353a0a 100644 (file)
@@ -661,11 +661,11 @@ finish:
                array_init(response_header);
        }
 
-       if (!php_stream_eof(stream)) {
-               size_t tmp_line_len;
+       {
                /* get response header */
-
-               if (php_stream_get_line(stream, tmp_line, sizeof(tmp_line) - 1, &tmp_line_len) != NULL) {
+               size_t tmp_line_len;
+               if (!php_stream_eof(stream) &&
+                       php_stream_get_line(stream, tmp_line, sizeof(tmp_line) - 1, &tmp_line_len) != NULL) {
                        zval http_response;
 
                        if (tmp_line_len > 9) {
@@ -726,10 +726,10 @@ finish:
                        }
                        ZVAL_STRINGL(&http_response, tmp_line, tmp_line_len);
                        zend_hash_next_index_insert(Z_ARRVAL_P(response_header), &http_response);
+               } else {
+                       php_stream_wrapper_log_error(wrapper, options, "HTTP request failed, unexpected end of socket!");
+                       goto out;
                }
-       } else {
-               php_stream_wrapper_log_error(wrapper, options, "HTTP request failed, unexpected end of socket!");
-               goto out;
        }
 
        /* read past HTTP headers */