iliaa Sat May 19 19:29:37 2007 UTC
Modified files: (Branch: PHP_5_2)
/php-src/ext/zip php_zip.c
Log:
CS fixes
Fixed a possible crash in the event directory cannot be created, due to a
double free.
http://cvs.php.net/viewvc.cgi/php-src/ext/zip/php_zip.c?r1=1.1.2.31&r2=1.1.2.32&diff_format=u
Index: php-src/ext/zip/php_zip.c
diff -u php-src/ext/zip/php_zip.c:1.1.2.31 php-src/ext/zip/php_zip.c:1.1.2.32
--- php-src/ext/zip/php_zip.c:1.1.2.31 Wed Mar 14 15:02:20 2007
+++ php-src/ext/zip/php_zip.c Sat May 19 19:29:37 2007
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_zip.c,v 1.1.2.31 2007/03/14 15:02:20 iliaa Exp $ */
+/* $Id: php_zip.c,v 1.1.2.32 2007/05/19 19:29:37 iliaa Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -1699,7 +1699,6 @@
zval **zval_file = NULL;
php_stream_statbuf ssb;
char *pathto;
- char *file;
int pathto_len;
int ret, i;
@@ -1713,24 +1712,22 @@
return;
}
- if (pathto_len<1) {
+ if (pathto_len < 1) {
RETURN_FALSE;
}
- if (php_stream_stat_path(pathto, &ssb) < 0) {
- ret = php_stream_mkdir(pathto, 0777, PHP_STREAM_MKDIR_RECURSIVE,
NULL);
- if (!ret) {
- efree(pathto);
- RETURN_FALSE;
- }
- }
+ if (php_stream_stat_path(pathto, &ssb) < 0) {
+ ret = php_stream_mkdir(pathto, 0777,
PHP_STREAM_MKDIR_RECURSIVE, NULL);
+ if (!ret) {
+ RETURN_FALSE;
+ }
+ }
ZIP_FROM_OBJECT(intern, this);
if (zval_files) {
switch (Z_TYPE_P(zval_files)) {
case IS_STRING:
- file = Z_STRVAL_P(zval_files);
- if (!php_zip_extract_file(intern, pathto, file,
Z_STRLEN_P(zval_files) TSRMLS_CC)) {
+ if (!php_zip_extract_file(intern, pathto,
Z_STRVAL_P(zval_files), Z_STRLEN_P(zval_files) TSRMLS_CC)) {
RETURN_FALSE;
}
break;
@@ -1745,8 +1742,7 @@
case IS_LONG:
break;
case IS_STRING:
- file =
Z_STRVAL_PP(zval_file);
- if
(!php_zip_extract_file(intern, pathto, file, Z_STRLEN_PP(zval_file) TSRMLS_CC))
{
+ if
(!php_zip_extract_file(intern, pathto, Z_STRVAL_PP(zval_file),
Z_STRLEN_PP(zval_file) TSRMLS_CC)) {
RETURN_FALSE;
}
break;
@@ -1760,22 +1756,21 @@
break;
}
} else {
- /* Extract all files */
- int filecount = zip_get_num_files(intern);
+ /* Extract all files */
+ int filecount = zip_get_num_files(intern);
- if (filecount == -1) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Illegal archive");
- RETURN_FALSE;
- }
-
- for (i = 0; i < filecount; i++) {
- file = (char*)zip_get_name(intern, i, ZIP_FL_UNCHANGED);
- if (!php_zip_extract_file(intern, pathto, file, strlen(file)
TSRMLS_CC)) {
- RETURN_FALSE;
- }
- }
- }
+ if (filecount == -1) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Illegal
archive");
+ RETURN_FALSE;
+ }
+ for (i = 0; i < filecount; i++) {
+ char *file = (char*)zip_get_name(intern, i,
ZIP_FL_UNCHANGED);
+ if (!php_zip_extract_file(intern, pathto, file,
strlen(file) TSRMLS_CC)) {
+ RETURN_FALSE;
+ }
+ }
+ }
RETURN_TRUE;
}
/* }}} */
@@ -2027,7 +2022,7 @@
php_info_print_table_start();
php_info_print_table_row(2, "Zip", "enabled");
- php_info_print_table_row(2, "Extension Version","$Id: php_zip.c,v
1.1.2.31 2007/03/14 15:02:20 iliaa Exp $");
+ php_info_print_table_row(2, "Extension Version","$Id: php_zip.c,v
1.1.2.32 2007/05/19 19:29:37 iliaa Exp $");
php_info_print_table_row(2, "Zip version", "2.0.0");
php_info_print_table_row(2, "Libzip version", "0.7.1");
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php