From 0800b3b1590ab9e094e6602fadd91b826b2d5add Mon Sep 17 00:00:00 2001 From: Greg Beaver Date: Sun, 18 May 2008 23:41:08 +0000 Subject: [PATCH] fix memleak, add test for previous segfault fix --- ext/phar/cgidebug | 10 +++++----- ext/phar/phar_object.c | 4 +++- ext/phar/tests/config.xml | 0 ext/phar/tests/files/blog.phar | Bin 0 -> 513 bytes ext/phar/tests/front.phar.phpt | 16 ++++++++++++++++ 5 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 ext/phar/tests/config.xml create mode 100644 ext/phar/tests/files/blog.phar create mode 100644 ext/phar/tests/front.phar.phpt diff --git a/ext/phar/cgidebug b/ext/phar/cgidebug index bacf6910a6..f356f9b104 100755 --- a/ext/phar/cgidebug +++ b/ext/phar/cgidebug @@ -1,11 +1,11 @@ #!/bin/sh -export SCRIPT_NAME=/frontcontroller34.php -export PATH_INFO=/start/index.php -export SCRIPT_FILENAME=/home/cellog/workspace/php5/ext/phar/tests/frontcontroller34.php -export PATH_TRANSLATED=/home/cellog/workspace/php5/ext/phar/tests/frontcontroller34.php +export SCRIPT_NAME=/front.phar.php +export PATH_INFO=/index.php +export SCRIPT_FILENAME=/home/cellog/workspace/php5/ext/phar/tests/front.phar.php +export PATH_TRANSLATED=/home/cellog/workspace/php5/ext/phar/tests/front.phar.php export REDIRECT_STATUS=1 export REQUEST_METHOD=GET -export REQUEST_URI=/frontcontroller34.php/start/index.php +export REQUEST_URI=/front.phar.php/index.php cd /home/cellog/workspace/php5/ ddd sapi/cgi/php-cgi & cd /home/cellog/workspace/php5/ext/phar diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c index 5bc2259647..2f9661adbb 100755 --- a/ext/phar/phar_object.c +++ b/ext/phar/phar_object.c @@ -555,16 +555,18 @@ PHP_METHOD(Phar, webPhar) testit = sapi_getenv("SCRIPT_NAME", sizeof("SCRIPT_NAME")-1 TSRMLS_CC); if (!(pt = strstr(testit, basename))) { + efree(testit); return; } path_info = sapi_getenv("PATH_INFO", sizeof("PATH_INFO")-1 TSRMLS_CC); if (path_info) { - entry = estrdup(path_info); + entry = path_info; entry_len = strlen(entry); spprintf(&path_info, 0, "%s%s", testit, path_info); free_pathinfo = 1; } else { path_info = testit; + free_pathinfo = 1; entry = estrndup("", 0); entry_len = 0; } diff --git a/ext/phar/tests/config.xml b/ext/phar/tests/config.xml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ext/phar/tests/files/blog.phar b/ext/phar/tests/files/blog.phar new file mode 100644 index 0000000000000000000000000000000000000000..16f8f7d5900e0218c2bfd8e16e2a078570641a64 GIT binary patch literal 513 zcmcDqFUTn1QsBx=(@4wANsUjf$Sf`?)=-F#ckv90k5|xBP}fh+&r8cp*Q?0QQPN*PQnRzLx6?#C& zsB2nt#m9R%`h>(g`}+oX`nU#ZXj&`S+wpS6F)%PN0kI$uGXgOLZ~`f~?v+5!vMmN4 zAlmV6h|V^sI&QF{;*!Li9FQftP-P(6^>ke)OqmThI5N`|G!&7817~O`RC94=<|XHp zrlg{HIx`P$mAW+-Cooh?Kz`TP;!;3DTKZgNiAC`#rMU%=&`(b-i3bK`NopQ24&at5 zA;o}_CNOyH?YJNg#WasAH8~?+K?!QV5?C$QM~}7oXT`P6d#kod-aQj+{C>v17oc!- Ick*=t05$QBO#lD@ literal 0 HcmV?d00001 diff --git a/ext/phar/tests/front.phar.phpt b/ext/phar/tests/front.phar.phpt new file mode 100644 index 0000000000..83c6a42284 --- /dev/null +++ b/ext/phar/tests/front.phar.phpt @@ -0,0 +1,16 @@ +--TEST-- +Phar front controller with mounted external file +--INI-- +default_charset= +--SKIPIF-- + +--ENV-- +SCRIPT_NAME=/front.phar.php +REQUEST_URI=/front.phar.php/index.php +PATH_INFO=/index.php +--EXPECTHEADERS-- +Content-type: text/html +--FILE_EXTERNAL-- +files/blog.phar +--EXPECT-- +string(0) "" \ No newline at end of file -- 2.40.0