]> granicus.if.org Git - php/commitdiff
Fixed bug #48216 (PHP Fatal error: SOAP-ERROR: Parsing WSDL: Extra content at the...
authorDmitry Stogov <dmitry@php.net>
Wed, 23 Nov 2011 10:49:42 +0000 (10:49 +0000)
committerDmitry Stogov <dmitry@php.net>
Wed, 23 Nov 2011 10:49:42 +0000 (10:49 +0000)
NEWS
ext/standard/filters.c

diff --git a/NEWS b/NEWS
index 384796735ea5c7c677ad9e75e96c661e123e1748..5999d3c9686f8c5cf0ccc2aa7b0bbd92868e6666 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -66,6 +66,9 @@ PHP                                                                        NEWS
     is >0). (Ilia)
 
 - SOAP
+  . Fixed bug #48216 (PHP Fatal error: SOAP-ERROR: Parsing WSDL:
+    Extra content at the end of the doc, when server uses chunked transfer
+    encoding with spaces after chunk size). (Dmitry)
   . Fixed bug #44686 (SOAP-ERROR: Parsing WSDL with references). (Dmitry)
   
 - Tidy:
index 2f1e3dc706812a3c56c2db5023929de3a9f6fe4e..ce241933db823df351773bd8b4ecd03082550a48 100644 (file)
@@ -1897,7 +1897,6 @@ php_stream_filter_factory consumed_filter_factory = {
 typedef enum _php_chunked_filter_state {
        CHUNK_SIZE_START,
        CHUNK_SIZE,
-       CHUNK_SIZE_EXT_START,
        CHUNK_SIZE_EXT,
        CHUNK_SIZE_CR,
        CHUNK_SIZE_LF,
@@ -1937,7 +1936,7 @@ static int php_dechunk(char *buf, int len, php_chunked_filter_data *data)
                                                data->state = CHUNK_ERROR;
                                                break;
                                        } else {
-                                               data->state = CHUNK_SIZE_EXT_START;
+                                               data->state = CHUNK_SIZE_EXT;
                                                break;
                                        }
                                        data->state = CHUNK_SIZE;
@@ -1948,13 +1947,6 @@ static int php_dechunk(char *buf, int len, php_chunked_filter_data *data)
                                } else if (p == end) {
                                        return out_len;
                                }
-                       case CHUNK_SIZE_EXT_START:
-                               if (*p == ';'|| *p == '\r' || *p == '\n') {
-                                       data->state = CHUNK_SIZE_EXT;
-                               } else {
-                                       data->state = CHUNK_ERROR;
-                                       continue;
-                               }
                        case CHUNK_SIZE_EXT:
                                /* skip extension */
                                while (p < end && *p != '\r' && *p != '\n') {