I am fixing bug #32614: Problem, on the solaris platform fdopen() can fail even if fd is a correct file descriptor, when fd>255 (the well-known solaris stdio problem). The webserver of the user crashes because the return value of fdopen() is not checked for NULL when casting a stream from posix to stdio. After this fd==-1 and fp==NULL ==> further calls to fread/fwrite with this fp segfault.
I committed the patches for PHP but I have no karme for "ZendEngine2". Can someone with karma submit this patch?


According to this it would be interesting, WHEN some PHP/Zend code tries to cast a POSIX stream to stdio? In which extension/functions? Can this be fixed to only use posix IO? The zend engine itself should be safe since 4.3.3 and since PHP5.

Does stream casts apply if a user uses the PHP user functions fopen, fread, fwrite? Since Saschas fix in PHP4 there this does not happen. What about PHP5?

I would try to fix this everywhere in the future.

-----
Uwe Schindler
[EMAIL PROTECTED] - http://www.php.net
NSAPI SAPI developer
Erlangen, Germany
Index: Zend/zend_stream.c
===================================================================
RCS file: /repository/ZendEngine2/zend_stream.c,v
retrieving revision 1.10
diff -u -r1.10 zend_stream.c
--- Zend/zend_stream.c  13 Mar 2005 17:48:45 -0000      1.10
+++ Zend/zend_stream.c  7 Apr 2005 07:29:54 -0000
@@ -60,6 +60,9 @@
                        
                case ZEND_HANDLE_FD:
                        file_handle->handle.fp = fdopen(file_handle->handle.fd, 
"rb");
+                       if (file_handle->handle.fp == NULL) {
+                               return FAILURE;
+                       }
                        file_handle->type = ZEND_HANDLE_FP;
                        break;
                        
-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to