]> granicus.if.org Git - php/commitdiff
fix memleak, add test for previous segfault fix
authorGreg Beaver <cellog@php.net>
Sun, 18 May 2008 23:41:08 +0000 (23:41 +0000)
committerGreg Beaver <cellog@php.net>
Sun, 18 May 2008 23:41:08 +0000 (23:41 +0000)
ext/phar/cgidebug
ext/phar/phar_object.c
ext/phar/tests/config.xml [new file with mode: 0644]
ext/phar/tests/files/blog.phar [new file with mode: 0644]
ext/phar/tests/front.phar.phpt [new file with mode: 0644]

index bacf6910a6561acd284a5a0d6f211814d9d0a883..f356f9b104b7222b68852a20a1d68e14107e976c 100755 (executable)
@@ -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
index 5bc22596476659b4000bcdd575f7dc035a74e28e..2f9661adbbf297c3d4ebd7c4dd344028f550bd11 100755 (executable)
@@ -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 (file)
index 0000000..e69de29
diff --git a/ext/phar/tests/files/blog.phar b/ext/phar/tests/files/blog.phar
new file mode 100644 (file)
index 0000000..16f8f7d
Binary files /dev/null and b/ext/phar/tests/files/blog.phar differ
diff --git a/ext/phar/tests/front.phar.phpt b/ext/phar/tests/front.phar.phpt
new file mode 100644 (file)
index 0000000..83c6a42
--- /dev/null
@@ -0,0 +1,16 @@
+--TEST--
+Phar front controller with mounted external file
+--INI--
+default_charset=
+--SKIPIF--
+<?php if (!extension_loaded("phar")) die("skip"); ?>
+--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