tony2001                                 Tue, 04 Aug 2009 09:24:48 +0000

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

Log:
fix memleak and possible segfault in HTTP fopen wrapper

Changed paths:
    U   php/php-src/branches/PHP_5_2/ext/standard/http_fopen_wrapper.c
    U   php/php-src/branches/PHP_5_3/ext/standard/http_fopen_wrapper.c
    U   php/php-src/trunk/ext/standard/http_fopen_wrapper.c

Modified: php/php-src/branches/PHP_5_2/ext/standard/http_fopen_wrapper.c
===================================================================
--- php/php-src/branches/PHP_5_2/ext/standard/http_fopen_wrapper.c      
2009-08-04 06:07:46 UTC (rev 286789)
+++ php/php-src/branches/PHP_5_2/ext/standard/http_fopen_wrapper.c      
2009-08-04 09:24:48 UTC (rev 286790)
@@ -347,7 +347,10 @@
                        }
                        smart_str_0(&tmpstr);
                        /* Remove newlines and spaces from start and end. 
there's at least one extra \r\n at the end that needs to go. */
-                       tmp = php_trim(tmpstr.c, strlen(tmpstr.c), NULL, 0, 
NULL, 3 TSRMLS_CC);
+                       if (tmpstr.c) {
+                               tmp = php_trim(tmpstr.c, strlen(tmpstr.c), 
NULL, 0, NULL, 3 TSRMLS_CC);
+                               smart_str_free(&tmpstr);
+                       }
                }
                if (Z_TYPE_PP(tmpzval) == IS_STRING && Z_STRLEN_PP(tmpzval)) {
                        /* Remove newlines and spaces from start and end 
php_trim will estrndup() */

Modified: php/php-src/branches/PHP_5_3/ext/standard/http_fopen_wrapper.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/http_fopen_wrapper.c      
2009-08-04 06:07:46 UTC (rev 286789)
+++ php/php-src/branches/PHP_5_3/ext/standard/http_fopen_wrapper.c      
2009-08-04 09:24:48 UTC (rev 286790)
@@ -348,7 +348,10 @@
                        }
                        smart_str_0(&tmpstr);
                        /* Remove newlines and spaces from start and end. 
there's at least one extra \r\n at the end that needs to go. */
-                       tmp = php_trim(tmpstr.c, strlen(tmpstr.c), NULL, 0, 
NULL, 3 TSRMLS_CC);
+                       if (tmpstr.c) {
+                               tmp = php_trim(tmpstr.c, strlen(tmpstr.c), 
NULL, 0, NULL, 3 TSRMLS_CC);
+                               smart_str_free(&tmpstr);
+                       }
                }
                if (Z_TYPE_PP(tmpzval) == IS_STRING && Z_STRLEN_PP(tmpzval)) {
                        /* Remove newlines and spaces from start and end 
php_trim will estrndup() */

Modified: php/php-src/trunk/ext/standard/http_fopen_wrapper.c
===================================================================
--- php/php-src/trunk/ext/standard/http_fopen_wrapper.c 2009-08-04 06:07:46 UTC 
(rev 286789)
+++ php/php-src/trunk/ext/standard/http_fopen_wrapper.c 2009-08-04 09:24:48 UTC 
(rev 286790)
@@ -391,7 +391,10 @@
                        }
                        smart_str_0(&tmpstr);
                        /* Remove newlines and spaces from start and end. 
there's at least one extra \r\n at the end that needs to go. */
-                       tmp = php_trim(tmpstr.c, strlen(tmpstr.c), NULL, 0, 
NULL, 3 TSRMLS_CC);
+                       if (tmpstr.c) {
+                               tmp = php_trim(tmpstr.c, strlen(tmpstr.c), 
NULL, 0, NULL, 3 TSRMLS_CC);
+                               smart_str_free(&tmpstr);
+                       }
                }
                if (Z_TYPE_PP(tmpzval) == IS_STRING && Z_STRLEN_PP(tmpzval)) {
                        /* Remove newlines and spaces from start and end 
php_trim will estrndup() */

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

Reply via email to