iliaa           Mon Sep 15 19:49:33 2003 EDT

  Modified files:              
    /php-src/ext/bz2    bz2.c 
  Log:
  Fixed bug #25106 (Added more stringent checks on bzopen() mode).
  In some cases bz2 may fail to open the file, but stream wrappers will still
  create an empty file, remove this file.
  Change virtual_filepath to virtual_filepath_ex, which allows BZ2_bzfopen()
  to work without having to resort to stream wrappers.
  
  
Index: php-src/ext/bz2/bz2.c
diff -u php-src/ext/bz2/bz2.c:1.1 php-src/ext/bz2/bz2.c:1.2
--- php-src/ext/bz2/bz2.c:1.1   Sat May 17 10:27:07 2003
+++ php-src/ext/bz2/bz2.c       Mon Sep 15 19:49:32 2003
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
  
-/* $Id: bz2.c,v 1.1 2003/05/17 14:27:07 sterling Exp $ */
+/* $Id: bz2.c,v 1.2 2003/09/15 23:49:32 iliaa Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -165,9 +165,12 @@
        if (strncasecmp("compress.bzip2://", path, 17) == 0) {
                path += 17;
        }
+       if (mode[0] != 'w' && mode[0] != 'r' && mode[1] != '\0') {
+               return NULL;
+       }
 
 #ifdef VIRTUAL_DIR
-       virtual_filepath(path, &path_copy TSRMLS_CC);
+       virtual_filepath_ex(path, &path_copy, NULL TSRMLS_CC);
 #else
        path_copy = path;
 #endif  
@@ -190,6 +193,12 @@
                                bz_file = BZ2_bzdopen(fd, mode);
                        }
                }
+               /* remove the file created by php_stream_open_wrapper(), it is not 
needed since BZ2 functions
+                * failed.
+                */
+               if (!bz_file && mode[0] == 'w') {
+                       VCWD_UNLINK(*opened_path);
+               }
        }
        
        if (bz_file) {
@@ -303,7 +312,12 @@
                WRONG_PARAM_COUNT;
        }
        convert_to_string_ex(mode);
-       
+
+       if (Z_STRVAL_PP(mode)[0] != 'r' && Z_STRVAL_PP(mode)[0] != 'w' && 
Z_STRVAL_PP(mode)[1] != '\0') {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "'%s' is not a valid mode 
for bzopen(). Only 'w' and 'r' are supported.", Z_STRVAL_PP(mode));
+               RETURN_FALSE;
+       }
+
        /* If it's not a resource its a string containing the filename to open */
        if (Z_TYPE_PP(file) != IS_RESOURCE) {
                convert_to_string_ex(file);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to