lbarnaud Sat Aug 2 02:36:25 2008 UTC Modified files: (Branch: PHP_5_3) /php-src/ext/zlib zlib.c Log: MFH: Avoid leaks when zlib streams can not be closed properly. http://cvs.php.net/viewvc.cgi/php-src/ext/zlib/zlib.c?r1=1.183.2.6.2.5.2.4&r2=1.183.2.6.2.5.2.5&diff_format=u Index: php-src/ext/zlib/zlib.c diff -u php-src/ext/zlib/zlib.c:1.183.2.6.2.5.2.4 php-src/ext/zlib/zlib.c:1.183.2.6.2.5.2.5 --- php-src/ext/zlib/zlib.c:1.183.2.6.2.5.2.4 Thu Jul 24 14:38:37 2008 +++ php-src/ext/zlib/zlib.c Sat Aug 2 02:36:25 2008 @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zlib.c,v 1.183.2.6.2.5.2.4 2008/07/24 14:38:37 lbarnaud Exp $ */ +/* $Id: zlib.c,v 1.183.2.6.2.5.2.5 2008/08/02 02:36:25 lbarnaud Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -218,6 +218,19 @@ ZEND_GET_MODULE(php_zlib) #endif +/* {{{ Memory management wrappers */ + +static voidpf php_zlib_alloc(voidpf opaque, uInt items, uInt size) +{ + return (voidpf)safe_emalloc(items, size, 0); +} + +static void php_zlib_free(voidpf opaque, voidpf address) +{ + efree((void*)address); +} +/* }}} */ + /* {{{ OnUpdate_zlib_output_compression */ static PHP_INI_MH(OnUpdate_zlib_output_compression) { @@ -553,8 +566,8 @@ } stream.data_type = Z_ASCII; - stream.zalloc = (alloc_func) Z_NULL; - stream.zfree = (free_func) Z_NULL; + stream.zalloc = php_zlib_alloc; + stream.zfree = php_zlib_free; stream.opaque = (voidpf) Z_NULL; stream.next_in = (Bytef *) data; @@ -620,8 +633,8 @@ } plength = limit; - stream.zalloc = (alloc_func) Z_NULL; - stream.zfree = (free_func) Z_NULL; + stream.zalloc = php_zlib_alloc; + stream.zfree = php_zlib_free; stream.opaque = Z_NULL; stream.avail_in = data_len + 1; /* there is room for \0 */ stream.next_in = (Bytef *) data; @@ -746,8 +759,8 @@ int err; if (do_start) { - ZLIBG(stream).zalloc = Z_NULL; - ZLIBG(stream).zfree = Z_NULL; + ZLIBG(stream).zalloc = php_zlib_alloc; + ZLIBG(stream).zfree = php_zlib_free; ZLIBG(stream).opaque = Z_NULL; switch (ZLIBG(compression_coding)) { @@ -836,8 +849,8 @@ RETURN_FALSE; } - stream.zalloc = Z_NULL; - stream.zfree = Z_NULL; + stream.zalloc = php_zlib_alloc; + stream.zfree = php_zlib_free; stream.opaque = Z_NULL; stream.next_in = (Bytef *) data;
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php