cvs: php-src /ext/bz2 bz2.c
| From: | Ilia Alshanetsky | Date: | Mon, 15 Sep 2003 23:49:33 +0000 |
| Subject: | cvs: php-src /ext/bz2 bz2.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-23783@lists.php.net to get a copy of this message | ||
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);