From 5645de756dc42fdcd7787011e01de6c59c6d8645 Mon Sep 17 00:00:00 2001 From: Mikko Koppanen Date: Mon, 16 Mar 2009 10:19:43 +0000 Subject: [PATCH] Closes bug #47667 --- ext/zip/lib/zip_open.c | 3 +++ ext/zip/tests/bug47667.phpt | 40 +++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 ext/zip/tests/bug47667.phpt diff --git a/ext/zip/lib/zip_open.c b/ext/zip/lib/zip_open.c index cd78281790..dbab6ec4af 100644 --- a/ext/zip/lib/zip_open.c +++ b/ext/zip/lib/zip_open.c @@ -66,6 +66,9 @@ zip_open(const char *fn, int flags, int *zep) int i; off_t len; + if (flags & ZIP_OVERWRITE) { + return _zip_allocate_new(fn, zep); + } switch (_zip_file_exists(fn, flags, zep)) { case -1: diff --git a/ext/zip/tests/bug47667.phpt b/ext/zip/tests/bug47667.phpt new file mode 100644 index 0000000000..960a3c5d7e --- /dev/null +++ b/ext/zip/tests/bug47667.phpt @@ -0,0 +1,40 @@ +--TEST-- +Bug #47667 (ZipArchive::OVERWRITE seems to have no effect) +--SKIPIF-- + +--FILE-- +open($filename, ZipArchive::CREATE) !== true) { + exit("Unable to open the zip file"); +} else { + $zip->addFromString('foo.txt', 'foo bar foobar'); + $zip->close(); +} + +for ($i = 0; $i < 10; $i++) { + $zip = new ZipArchive(); + if ($zip->open($filename, ZipArchive::OVERWRITE) !== true) { + exit("Unable to open the zip file"); + } + $zip->addFromString("foo_{$i}.txt", 'foo bar foobar'); + $zip->close(); +} + +$zip = new ZipArchive(); +if ($zip->open($filename, ZipArchive::CREATE) !== true) { + exit("Unable to open the zip file"); +} + +echo "files: " , $zip->numFiles; + +unlink($filename); + +--EXPECT-- +files: 1 -- 2.50.1