cvs: php-src(PHP_5_2) /ext/zip php_zip.c /ext/zip/lib zip_fclose.c
| From: | Nuno Lopes | Date: | Sat, 11 Nov 2006 23:43:00 +0000 |
| Subject: | cvs: php-src(PHP_5_2) /ext/zip php_zip.c /ext/zip/lib zip_fclose.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-41480@lists.php.net to get a copy of this message | ||
nlopess Sat Nov 11 23:43:00 2006 UTC
Modified files: (Branch: PHP_5_2)
/php-src/ext/zip php_zip.c
/php-src/ext/zip/lib zip_fclose.c
Log:
fix leaks within zip entries in several tests
http://cvs.php.net/viewvc.cgi/php-src/ext/zip/php_zip.c?r1=1.1.2.17&r2=1.1.2.18&diff_format=u
Index: php-src/ext/zip/php_zip.c
diff -u php-src/ext/zip/php_zip.c:1.1.2.17 php-src/ext/zip/php_zip.c:1.1.2.18
--- php-src/ext/zip/php_zip.c:1.1.2.17 Thu Nov 9 16:04:34 2006
+++ php-src/ext/zip/php_zip.c Sat Nov 11 23:43:00 2006
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_zip.c,v 1.1.2.17 2006/11/09 16:04:34 nlopess Exp $ */
+/* $Id: php_zip.c,v 1.1.2.18 2006/11/11 23:43:00 nlopess Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -551,6 +551,7 @@
if (zip_int) {
if (zip_int->za) {
zip_close(zip_int->za);
+ zip_int->za = NULL;
}
efree(rsrc->ptr);
@@ -565,8 +566,14 @@
{
zip_read_rsrc *zr_rsrc = (zip_read_rsrc *) rsrc->ptr;
- efree(zr_rsrc);
- rsrc->ptr = NULL;
+ if (zr_rsrc) {
+ if (zr_rsrc->zf) {
+ zip_fclose(zr_rsrc->zf);
+ zr_rsrc->zf = NULL;
+ }
+ efree(zr_rsrc);
+ rsrc->ptr = NULL;
+ }
}
/* }}} */
@@ -1992,7 +1999,7 @@
php_info_print_table_start();
php_info_print_table_row(2, "Zip", "enabled");
- php_info_print_table_row(2, "Extension Version","$Id: php_zip.c,v 1.1.2.17
2006/11/09 16:04:34 nlopess Exp $");
+ php_info_print_table_row(2, "Extension Version","$Id: php_zip.c,v 1.1.2.18
2006/11/11 23:43:00 nlopess Exp $");
php_info_print_table_row(2, "Zip version", "2.0.0");
php_info_print_table_row(2, "Libzip version", "0.7.1");
http://cvs.php.net/viewvc.cgi/php-src/ext/zip/lib/zip_fclose.c?r1=1.1&r2=1.1.2.1&diff_format=u
Index: php-src/ext/zip/lib/zip_fclose.c
diff -u php-src/ext/zip/lib/zip_fclose.c:1.1 php-src/ext/zip/lib/zip_fclose.c:1.1.2.1
--- php-src/ext/zip/lib/zip_fclose.c:1.1 Mon Jul 24 16:58:58 2006
+++ php-src/ext/zip/lib/zip_fclose.c Sat Nov 11 23:43:00 2006
@@ -52,13 +52,15 @@
free(zf->buffer);
free(zf->zstr);
- for (i=0; i<zf->za->nfile; i++) {
- if (zf->za->file[i] == zf) {
- zf->za->file[i] = zf->za->file[zf->za->nfile-1];
- zf->za->nfile--;
- break;
+ if (zf->za) {
+ for (i=0; i<zf->za->nfile; i++) {
+ if (zf->za->file[i] == zf) {
+ zf->za->file[i] = zf->za->file[zf->za->nfile-1];
+ zf->za->nfile--;
+ break;
+ }
+ }
}
- }
ret = 0;
if (zf->error.zip_err)