tony2001                Wed Jun 21 13:12:37 2006 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src/ext/bz2    bz2.c 
  Log:
  MFH: 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.14.2.3.2.2&r2=1.14.2.3.2.3&diff_format=u
Index: php-src/ext/bz2/bz2.c
diff -u php-src/ext/bz2/bz2.c:1.14.2.3.2.2 php-src/ext/bz2/bz2.c:1.14.2.3.2.3
--- php-src/ext/bz2/bz2.c:1.14.2.3.2.2  Wed Jun 21 12:43:27 2006
+++ php-src/ext/bz2/bz2.c       Wed Jun 21 13:12:37 2006
@@ -16,7 +16,7 @@
   +----------------------------------------------------------------------+
 */
  
-/* $Id: bz2.c,v 1.14.2.3.2.2 2006/06/21 12:43:27 tony2001 Exp $ */
+/* $Id: bz2.c,v 1.14.2.3.2.3 2006/06/21 13:12:37 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -384,6 +384,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

Reply via email to