[PATCH] fix crash in solaris when fdopen() fails

From: Date: Thu, 07 Apr 2005 07:40:43 +0000
Subject: [PATCH] fix crash in solaris when fdopen() fails
Groups: php.internals 
Request: Send a blank email to internals+get-15890@lists.php.net to get a copy of this message
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 thetaphi@php.net - 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;
« previous php.internals (#15890) next »