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

Reply via email to