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