cvs: php-src /ext/zlib zlib_filter.c
| From: | Sara Golemon | Date: | Wed, 21 Jul 2004 02:34:23 +0000 |
| Subject: | cvs: php-src /ext/zlib zlib_filter.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-27937@lists.php.net to get a copy of this message | ||
pollita Tue Jul 20 22:34:23 2004 EDT
Modified files:
/php-src/ext/zlib zlib_filter.c
Log:
Persistent mallocs can return NULL (on failure)
http://cvs.php.net/diff.php/php-src/ext/zlib/zlib_filter.c?r1=1.3&r2=1.4&ty=u
Index: php-src/ext/zlib/zlib_filter.c
diff -u php-src/ext/zlib/zlib_filter.c:1.3 php-src/ext/zlib/zlib_filter.c:1.4
--- php-src/ext/zlib/zlib_filter.c:1.3 Tue Jul 20 01:08:52 2004
+++ php-src/ext/zlib/zlib_filter.c Tue Jul 20 22:34:23 2004
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zlib_filter.c,v 1.3 2004/07/20 05:08:52 pollita Exp $ */
+/* $Id: zlib_filter.c,v 1.4 2004/07/21 02:34:23 pollita Exp $ */
#include "php.h"
#include "php_zlib.h"
@@ -39,7 +39,7 @@
static voidpf php_zlib_alloc(voidpf opaque, uInt items, uInt size)
{
- return (voidpf)pemalloc(items * size, ((php_zlib_filter_data*)opaque)->persistent);
+ return (voidpf)safe_pemalloc(items, size, 0, ((php_zlib_filter_data*)opaque)->persistent);
}
static void php_zlib_free(voidpf opaque, voidpf address)
@@ -274,6 +274,10 @@
/* Create this filter */
data = pecalloc(1, sizeof(php_zlib_filter_data), persistent);
+ if (!data) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed allocating %d bytes.",
data->inbuf_len);
+ return NULL;
+ }
/* Circular reference */
data->strm.opaque = (voidpf) data;
@@ -282,8 +286,20 @@
data->strm.zfree = (free_func) php_zlib_free;
data->strm.avail_out = data->outbuf_len = data->inbuf_len = 2048;
data->strm.next_in = data->inbuf = (Bytef *) pemalloc(data->inbuf_len, persistent);
+ if (!data->inbuf) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed allocating %d bytes.",
data->inbuf_len);
+ pefree(data, persistent);
+ return NULL;
+ }
data->strm.avail_in = 0;
data->strm.next_out = data->outbuf = (Bytef *) pemalloc(data->outbuf_len, persistent);
+ if (!data->outbuf) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed allocating %d bytes.",
data->inbuf_len);
+ pefree(data->inbuf, persistent);
+ pefree(data, persistent);
+ return NULL;
+ }
+
data->strm.data_type = Z_ASCII;
if (strcasecmp(filtername, "zlib.inflate") == 0) {