#30153 [Opn]: FATAL erealloc() error when using gzinflate()

From: Date: Fri, 01 Oct 2004 09:38:18 +0000
Subject: #30153 [Opn]: FATAL erealloc() error when using gzinflate()
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-66990@lists.php.net to get a copy of this message
 ID:               30153
 User updated by:  OvdSpek at LIACS dot NL
 Reported By:      OvdSpek at LIACS dot NL
 Status:           Open
 Bug Type:         Zlib Related
 Operating System: *
 PHP Version:      4CVS, 5CVS (20040929)
 New Comment:

And why are there no 'friends' that do not abort?


Previous Comments:
------------------------------------------------------------------------

[2004-10-01 11:21:59] OvdSpek at LIACS dot NL

So what does the allow_failure parameter do?

------------------------------------------------------------------------

[2004-10-01 11:19:08] derick@php.net

No, emalloc() and friends abort in case of a memory overflow, Checking
for the return value does not make any sense.

------------------------------------------------------------------------

[2004-10-01 11:17:11] OvdSpek at LIACS dot NL

> which results in graceful request termination.

Is a call to exit() graceful request termination?
In my opinion, that's just killing the entire process.
And in the case of a multi-threaded server, that's equivalent to
killing the entire server.

BTW, erealloc has an allow_failure parameter. How about passing true at
/php4/ext/zlib/zlib.c:628?

ZEND_API void *_erealloc(void *ptr, size_t size, int allow_failure
ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)

------------------------------------------------------------------------

[2004-10-01 11:06:10] OvdSpek at LIACS dot NL

But /php4/ext/zlib/zlib.c is your code right? Not the code from the
zlib authors?
The bug isn't in zlib owned code, it's in php owned code, and that's
your code.

This code indeed expects to get NULL if erealloc fails.
Is there a flag for erealloc or function to use that doesn't 'cause an
exception' and instead just returns NULL?

s2 = (char *) erealloc(s1,length);
if(! s2) { if(s1) efree(s1); RETURN_FALSE; }

------------------------------------------------------------------------

[2004-10-01 09:45:13] sniper@php.net

Yes, you're the only one. Report to zlib authors if you don't like
Ilia's reply.

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/30153

-- 
Edit this bug report at http://bugs.php.net/?id=30153&edit=1


Thread (20 messages)

« previous php.bugs (#66990) next »