From: Greg Beaver Date: Sun, 18 May 2008 23:11:24 +0000 (+0000) Subject: fix segfault, test coming shortly X-Git-Tag: BEFORE_NEW_PARAMETER_PARSE~193 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b149e8c0fa4e8c78a0282a78dfc0e712ee7e65c3;p=php fix segfault, test coming shortly --- diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c index ea8863931e..5bc2259647 100755 --- a/ext/phar/phar_object.c +++ b/ext/phar/phar_object.c @@ -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;