tony2001 Wed Jun 21 13:12:00 2006 UTC
Modified files:
/php-src/ext/bz2 bz2.c
Log:
don't try to read or write from/to a stream if it was open in different mode
(leads to segfault in libbz2)
http://cvs.php.net/viewvc.cgi/php-src/ext/bz2/bz2.c?r1=1.21&r2=1.22&diff_format=u
Index: php-src/ext/bz2/bz2.c
diff -u php-src/ext/bz2/bz2.c:1.21 php-src/ext/bz2/bz2.c:1.22
--- php-src/ext/bz2/bz2.c:1.21 Wed Jun 21 12:42:50 2006
+++ php-src/ext/bz2/bz2.c Wed Jun 21 13:12:00 2006
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: bz2.c,v 1.21 2006/06/21 12:42:50 tony2001 Exp $ */
+/* $Id: bz2.c,v 1.22 2006/06/21 13:12:00 tony2001 Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -378,6 +378,18 @@
php_stream_from_zval(stream, file);
+ if (!memchr(stream->mode, Z_STRVAL_PP(mode)[0],
strlen(stream->mode))) {
+ switch (Z_STRVAL_PP(mode)[0]) {
+ case 'r':
+ php_error_docref(NULL TSRMLS_CC,
E_WARNING, "cannot read from a stream opened in write only mode");
+ break;
+ case 'w':
+ php_error_docref(NULL TSRMLS_CC,
E_WARNING, "cannot write to a stream opened in read only mode");
+ break;
+ }
+ RETURN_FALSE;
+ }
+
if (FAILURE == php_stream_cast(stream, PHP_STREAM_AS_FD, (void
*) &fd, REPORT_ERRORS)) {
RETURN_FALSE;
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php