jani                                     Thu, 10 Sep 2009 16:19:42 +0000

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

Log:
- Simplified a bit and fixed possible memory corruption and definate leak.

Changed paths:
    U   php/php-src/branches/PHP_5_3/main/fopen_wrappers.c
    U   php/php-src/branches/PHP_5_3/sapi/cgi/cgi_main.c
    U   php/php-src/trunk/main/fopen_wrappers.c
    U   php/php-src/trunk/sapi/cgi/cgi_main.c

Modified: php/php-src/branches/PHP_5_3/main/fopen_wrappers.c
===================================================================
--- php/php-src/branches/PHP_5_3/main/fopen_wrappers.c  2009-09-10 15:05:49 UTC 
(rev 288245)
+++ php/php-src/branches/PHP_5_3/main/fopen_wrappers.c  2009-09-10 16:19:42 UTC 
(rev 288246)
@@ -485,6 +485,7 @@

        file_handle->opened_path = expand_filepath(filename, NULL TSRMLS_CC);

+       STR_FREE(SG(request_info).path_translated);     /* for same reason as 
above */
        SG(request_info).path_translated = filename;

        file_handle->filename = SG(request_info).path_translated;

Modified: php/php-src/branches/PHP_5_3/sapi/cgi/cgi_main.c
===================================================================
--- php/php-src/branches/PHP_5_3/sapi/cgi/cgi_main.c    2009-09-10 15:05:49 UTC 
(rev 288245)
+++ php/php-src/branches/PHP_5_3/sapi/cgi/cgi_main.c    2009-09-10 16:19:42 UTC 
(rev 288246)
@@ -1280,9 +1280,6 @@
                                if (pt) {
                                        efree(pt);
                                }
-                               if (is_valid_path(script_path_translated)) {
-                                       SG(request_info).path_translated = 
estrdup(script_path_translated);
-                               }
                        } else {
                                /* make sure path_info/translated are empty */
                                if (!orig_script_filename ||
@@ -1311,9 +1308,6 @@
                                } else {
                                        SG(request_info).request_uri = 
env_script_name;
                                }
-                               if (is_valid_path(script_path_translated)) {
-                                       SG(request_info).path_translated = 
estrdup(script_path_translated);
-                               }
                                free(real_path);
                        }
                } else {
@@ -1326,11 +1320,12 @@
                        if (!CGIG(discard_path) && env_path_translated) {
                                script_path_translated = env_path_translated;
                        }
-                       if (is_valid_path(script_path_translated)) {
-                               SG(request_info).path_translated = 
estrdup(script_path_translated);
-                       }
                }

+               if (is_valid_path(script_path_translated)) {
+                       SG(request_info).path_translated = 
estrdup(script_path_translated);
+               }
+
                SG(request_info).request_method = 
sapi_cgibin_getenv("REQUEST_METHOD", sizeof("REQUEST_METHOD")-1 TSRMLS_CC);
                /* FIXME - Work out proto_num here */
                SG(request_info).query_string = 
sapi_cgibin_getenv("QUERY_STRING", sizeof("QUERY_STRING")-1 TSRMLS_CC);
@@ -2131,26 +2126,14 @@

 fastcgi_request_done:
                        {
-                               char *path_translated;
+                               STR_FREE(SG(request_info).path_translated);

-                               /* Go through this trouble so that the memory 
manager doesn't warn
-                                * about SG(request_info).path_translated 
leaking
-                                */
-                               if (SG(request_info).path_translated) {
-                                       path_translated = 
strdup(SG(request_info).path_translated);
-                                       
STR_FREE(SG(request_info).path_translated);
-                                       SG(request_info).path_translated = 
path_translated;
-                               }
-
                                php_request_shutdown((void *) 0);
+
                                if (exit_status == 0) {
                                        exit_status = EG(exit_status);
                                }

-                               if (SG(request_info).path_translated) {
-                                       free(SG(request_info).path_translated);
-                                       SG(request_info).path_translated = NULL;
-                               }
                                if (free_query_string && 
SG(request_info).query_string) {
                                        free(SG(request_info).query_string);
                                        SG(request_info).query_string = NULL;

Modified: php/php-src/trunk/main/fopen_wrappers.c
===================================================================
--- php/php-src/trunk/main/fopen_wrappers.c     2009-09-10 15:05:49 UTC (rev 
288245)
+++ php/php-src/trunk/main/fopen_wrappers.c     2009-09-10 16:19:42 UTC (rev 
288246)
@@ -437,6 +437,7 @@

        file_handle->opened_path = expand_filepath(filename, NULL TSRMLS_CC);

+       STR_FREE(SG(request_info).path_translated);     /* for same reason as 
above */
        SG(request_info).path_translated = filename;

        file_handle->filename = SG(request_info).path_translated;

Modified: php/php-src/trunk/sapi/cgi/cgi_main.c
===================================================================
--- php/php-src/trunk/sapi/cgi/cgi_main.c       2009-09-10 15:05:49 UTC (rev 
288245)
+++ php/php-src/trunk/sapi/cgi/cgi_main.c       2009-09-10 16:19:42 UTC (rev 
288246)
@@ -1277,9 +1277,6 @@
                                if (pt) {
                                        efree(pt);
                                }
-                               if (is_valid_path(script_path_translated)) {
-                                       SG(request_info).path_translated = 
estrdup(script_path_translated);
-                               }
                        } else {
                                /* make sure path_info/translated are empty */
                                if (!orig_script_filename ||
@@ -1308,9 +1305,6 @@
                                } else {
                                        SG(request_info).request_uri = 
env_script_name;
                                }
-                               if (is_valid_path(script_path_translated)) {
-                                       SG(request_info).path_translated = 
estrdup(script_path_translated);
-                               }
                                free(real_path);
                        }
                } else {
@@ -1323,11 +1317,12 @@
                        if (!CGIG(discard_path) && env_path_translated) {
                                script_path_translated = env_path_translated;
                        }
-                       if (is_valid_path(script_path_translated)) {
-                               SG(request_info).path_translated = 
estrdup(script_path_translated);
-                       }
                }

+               if (is_valid_path(script_path_translated)) {
+                       SG(request_info).path_translated = 
estrdup(script_path_translated);
+               }
+
                SG(request_info).request_method = 
sapi_cgibin_getenv("REQUEST_METHOD", sizeof("REQUEST_METHOD")-1 TSRMLS_CC);
                /* FIXME - Work out proto_num here */
                SG(request_info).query_string = 
sapi_cgibin_getenv("QUERY_STRING", sizeof("QUERY_STRING")-1 TSRMLS_CC);
@@ -2125,26 +2120,14 @@

 fastcgi_request_done:
                        {
-                               char *path_translated;
+                               STR_FREE(SG(request_info).path_translated);

-                               /* Go through this trouble so that the memory 
manager doesn't warn
-                                * about SG(request_info).path_translated 
leaking
-                                */
-                               if (SG(request_info).path_translated) {
-                                       path_translated = 
strdup(SG(request_info).path_translated);
-                                       
STR_FREE(SG(request_info).path_translated);
-                                       SG(request_info).path_translated = 
path_translated;
-                               }
-
                                php_request_shutdown((void *) 0);
+
                                if (exit_status == 0) {
                                        exit_status = EG(exit_status);
                                }

-                               if (SG(request_info).path_translated) {
-                                       free(SG(request_info).path_translated);
-                                       SG(request_info).path_translated = NULL;
-                               }
                                if (free_query_string && 
SG(request_info).query_string) {
                                        free(SG(request_info).query_string);
                                        SG(request_info).query_string = NULL;

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

Reply via email to