From bb935ff8dc65c52efea6aae6697a806dc86c8580 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 20 Mar 2013 09:10:10 +0100 Subject: [PATCH 1/3] Fixed bug #64452 Zip PHPTs crash intermittently --- NEWS | 3 +++ ext/zip/lib/zip_close.c | 6 +++++- ext/zip/lib/zip_dirent.c | 12 +++++++++--- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index facb9ad1549..d62e1a189df 100644 --- a/NEWS +++ b/NEWS @@ -17,6 +17,9 @@ PHP NEWS - DateTime . Fixed bug #62852 (Unserialize Invalid Date causes crash). (Anatol) +- Zip: + . Bug #64452 (Zip crash intermittently). (Anatol) + 14 Mar 2013, PHP 5.3.23 diff --git a/ext/zip/lib/zip_close.c b/ext/zip/lib/zip_close.c index 362f92d749c..e66c56697b1 100644 --- a/ext/zip/lib/zip_close.c +++ b/ext/zip/lib/zip_close.c @@ -88,6 +88,9 @@ zip_close(struct zip *za) if (za == NULL) return -1; + if (za->zp == NULL) + return -1; + if (!_zip_changed(za, &survivors)) { _zip_free(za); return 0; @@ -164,9 +167,10 @@ zip_close(struct zip *za) for (j=0; jentry+i) || new_torrentzip) { - _zip_dirent_init(&de); if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0)) _zip_dirent_torrent_normalize(&de); diff --git a/ext/zip/lib/zip_dirent.c b/ext/zip/lib/zip_dirent.c index b5b9d273be4..b9dac5c989e 100644 --- a/ext/zip/lib/zip_dirent.c +++ b/ext/zip/lib/zip_dirent.c @@ -157,11 +157,17 @@ _zip_cdir_write(struct zip_cdir *cd, FILE *fp, struct zip_error *error) void _zip_dirent_finalize(struct zip_dirent *zde) { - free(zde->filename); + if (zde->filename_len > 0) { + free(zde->filename); + } zde->filename = NULL; - free(zde->extrafield); + if (zde->extrafield_len > 0) { + free(zde->extrafield); + } zde->extrafield = NULL; - free(zde->comment); + if (zde->comment_len > 0) { + free(zde->comment); + } zde->comment = NULL; } From 0881ff046686197984013e3ca3d84a797144ffcd Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 20 Mar 2013 09:13:13 +0100 Subject: [PATCH 2/3] updated NEWS --- NEWS | 3 +++ 1 file changed, 3 insertions(+) diff --git a/NEWS b/NEWS index ca51fc39303..4e4557f8806 100644 --- a/NEWS +++ b/NEWS @@ -17,6 +17,9 @@ PHP NEWS . Fixed bug #61981 (OO API, walk: $suffix_as_key is not working correctly). (Boris Lytochkin) +- Zip: + . Bug #64452 (Zip crash intermittently). (Anatol) + 14 Mar 2013, PHP 5.4.13 - Core: From bf8026aacf6ebeafca9c78928e3e660d7698ff6a Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 20 Mar 2013 09:15:16 +0100 Subject: [PATCH 3/3] updated NEWS --- NEWS | 3 +++ 1 file changed, 3 insertions(+) diff --git a/NEWS b/NEWS index 597010b5345..18d4d1e343b 100644 --- a/NEWS +++ b/NEWS @@ -28,6 +28,9 @@ PHP NEWS . Implement FR #48358 (Add SplDoublyLinkedList::add() to insert an element at a given offset). (Mark Baker, David Soria Parra) +- Zip: + . Bug #64452 (Zip crash intermittently). (Anatol) + 07 Mar 2013, PHP 5.5.0 Alpha 6 - Core: