]> granicus.if.org Git - php/commitdiff
MFB fix segfault
authorGreg Beaver <cellog@php.net>
Sun, 18 May 2008 23:12:47 +0000 (23:12 +0000)
committerGreg Beaver <cellog@php.net>
Sun, 18 May 2008 23:12:47 +0000 (23:12 +0000)
ext/phar/cgidebug
ext/phar/phar_object.c

index bacf6910a6561acd284a5a0d6f211814d9d0a883..c0d89d7d25c96227d95422f4015a8e1d1935c190 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=
+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
 cd /home/cellog/workspace/php5/
 ddd sapi/cgi/php-cgi &
 cd /home/cellog/workspace/php5/ext/phar
index a215ed4448a4883dd31a2d773247d284dbdfe2a5..1b4035a4a9e86204a7a4bf9ca755e6bfcee0e4da 100755 (executable)
@@ -445,7 +445,7 @@ PHP_METHOD(Phar, running)
  */
 PHP_METHOD(Phar, mount)
 {
-       char *fname, *arch, *entry, *path, *actual;
+       char *fname, *arch = NULL, *entry = NULL, *path, *actual;
        int fname_len, arch_len, entry_len, path_len, actual_len;
        phar_archive_data **pphar;
 
@@ -467,7 +467,9 @@ PHP_METHOD(Phar, mount)
 carry_on2:
                if (SUCCESS != zend_hash_find(&(PHAR_GLOBALS->phar_fname_map), arch, arch_len, (void **)&pphar)) {
                        zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "%s is not a phar archive, cannot mount", arch);
-                       efree(arch);
+                       if (arch) {
+                               efree(arch);
+                       }
                        return;
                }
 carry_on:
@@ -476,13 +478,17 @@ carry_on:
                        if (path && path == entry) {
                                efree(entry);
                        }
-                       efree(arch);
+                       if (arch) {
+                               efree(arch);
+                       }
                        return;
                }
-               if (path && path == entry) {
+               if (entry && path && path == entry) {
                        efree(entry);
                }
-               efree(arch);
+               if (arch) {
+                       efree(arch);
+               }
                return;
        } else if (SUCCESS == zend_hash_find(&(PHAR_GLOBALS->phar_fname_map), fname, fname_len, (void **)&pphar)) {
                goto carry_on;