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