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