tony2001                Wed Jun 21 12:42:50 2006 UTC

  Modified files:              
    /php-src/ext/bz2    bz2.c 
  Log:
  fix invalid read with bzopen("","") and prevent filename from being empty 
(which causes endless loop somewhere is libbz2)
  tests will follow
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/bz2/bz2.c?r1=1.20&r2=1.21&diff_format=u
Index: php-src/ext/bz2/bz2.c
diff -u php-src/ext/bz2/bz2.c:1.20 php-src/ext/bz2/bz2.c:1.21
--- php-src/ext/bz2/bz2.c:1.20  Sat Jun 10 22:59:39 2006
+++ php-src/ext/bz2/bz2.c       Wed Jun 21 12:42:50 2006
@@ -16,7 +16,7 @@
   +----------------------------------------------------------------------+
 */
  
-/* $Id: bz2.c,v 1.20 2006/06/10 22:59:39 bjori Exp $ */
+/* $Id: bz2.c,v 1.21 2006/06/21 12:42:50 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -353,7 +353,7 @@
        }
        convert_to_string_ex(mode);
 
-       if (Z_STRVAL_PP(mode)[0] != 'r' && Z_STRVAL_PP(mode)[0] != 'w' && 
Z_STRVAL_PP(mode)[1] != '\0') {
+       if (Z_STRLEN_PP(mode) != 1 || (Z_STRVAL_PP(mode)[0] != 'r' && 
Z_STRVAL_PP(mode)[0] != 'w')) {
                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;
        }
@@ -361,6 +361,12 @@
        /* 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);
+
+               if (Z_STRLEN_PP(file) == 0) {
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "filename 
cannot be empty");
+                       RETURN_FALSE;
+               }
+
                stream = php_stream_bz2open(NULL,
                                                                        
Z_STRVAL_PP(file), 
                                                                        
Z_STRVAL_PP(mode), 

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

Reply via email to