cellog Thu Sep 11 03:29:15 2008 UTC Added files: (Branch: PHP_5_3) /php-src/ext/phar/tests bug46032.phpt
Modified files: /php-src/ext/phar phar_object.c Log: fix Bug #46032: PharData::__construct wrong memory read http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar_object.c?r1=1.266.2.46&r2=1.266.2.47&diff_format=u Index: php-src/ext/phar/phar_object.c diff -u php-src/ext/phar/phar_object.c:1.266.2.46 php-src/ext/phar/phar_object.c:1.266.2.47 --- php-src/ext/phar/phar_object.c:1.266.2.46 Sun Aug 31 21:02:55 2008 +++ php-src/ext/phar/phar_object.c Thu Sep 11 03:29:14 2008 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: phar_object.c,v 1.266.2.46 2008/08/31 21:02:55 sfox Exp $ */ +/* $Id: phar_object.c,v 1.266.2.47 2008/09/11 03:29:14 cellog Exp $ */ #include "phar_internal.h" #include "func_interceptors.h" @@ -1165,10 +1165,10 @@ return; } + save_fname = fname; if (SUCCESS == phar_split_fname(fname, fname_len, &arch, &arch_len, &entry, &entry_len, !is_data, 2 TSRMLS_CC)) { /* use arch (the basename for the archive) for fname instead of fname */ /* this allows support for RecursiveDirectoryIterator of subdirectories */ - save_fname = fname; #ifdef PHP_WIN32 phar_unixify_path_separators(arch, arch_len); #endif @@ -1178,7 +1178,6 @@ } else { arch = estrndup(fname, fname_len); arch_len = fname_len; - save_fname = fname; fname = arch; phar_unixify_path_separators(arch, arch_len); #endif @@ -1186,7 +1185,7 @@ if (phar_open_or_create_filename(fname, fname_len, alias, alias_len, is_data, REPORT_ERRORS, &phar_data, &error TSRMLS_CC) == FAILURE) { - if (fname == arch) { + if (fname == arch && fname != save_fname) { efree(arch); fname = save_fname; } http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/bug46032.phpt?view=markup&rev=1.1 Index: php-src/ext/phar/tests/bug46032.phpt +++ php-src/ext/phar/tests/bug46032.phpt -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php