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

Reply via email to