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) {
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php