dmitry                                   Wed, 23 Nov 2011 10:49:42 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=319714

Log:
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)

Bug: https://bugs.php.net/48216 (Assigned) PHP Fatal error:  SOAP-ERROR: 
Parsing WSDL: Extra content at the end of the doc
      
Changed paths:
    U   php/php-src/branches/PHP_5_3/NEWS
    U   php/php-src/branches/PHP_5_3/ext/standard/filters.c
    U   php/php-src/branches/PHP_5_4/ext/standard/filters.c
    U   php/php-src/trunk/ext/standard/filters.c

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS   2011-11-23 10:47:58 UTC (rev 319713)
+++ php/php-src/branches/PHP_5_3/NEWS   2011-11-23 10:49:42 UTC (rev 319714)
@@ -66,6 +66,9 @@
     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:

Modified: php/php-src/branches/PHP_5_3/ext/standard/filters.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/filters.c 2011-11-23 10:47:58 UTC 
(rev 319713)
+++ php/php-src/branches/PHP_5_3/ext/standard/filters.c 2011-11-23 10:49:42 UTC 
(rev 319714)
@@ -1897,7 +1897,6 @@
 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 @@
                                                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 @@
                                } 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') {

Modified: php/php-src/branches/PHP_5_4/ext/standard/filters.c
===================================================================
--- php/php-src/branches/PHP_5_4/ext/standard/filters.c 2011-11-23 10:47:58 UTC 
(rev 319713)
+++ php/php-src/branches/PHP_5_4/ext/standard/filters.c 2011-11-23 10:49:42 UTC 
(rev 319714)
@@ -1897,7 +1897,6 @@
 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 @@
                                                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 @@
                                } 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') {

Modified: php/php-src/trunk/ext/standard/filters.c
===================================================================
--- php/php-src/trunk/ext/standard/filters.c    2011-11-23 10:47:58 UTC (rev 
319713)
+++ php/php-src/trunk/ext/standard/filters.c    2011-11-23 10:49:42 UTC (rev 
319714)
@@ -1897,7 +1897,6 @@
 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 @@
                                                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 @@
                                } 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') {

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to