#48048 [Opn->Bgs]: Empty files corrupt zip

From: Date: Thu, 07 May 2009 13:02:52 +0000
Subject: #48048 [Opn->Bgs]: Empty files corrupt zip
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-136930@lists.php.net to get a copy of this message
ID: 48048 Updated by: jani@php.net Reported By: php at codecaster dot nl -Status: Open +Status: Bogus Bug Type: Zip Related Operating System: FreeBSD 7 PHP Version: 5.2.9 New Comment: RTFM: "zip_entry_compressedsize() Returns the compressed size of the specified directory entry." When you use the correct function zip_entry_filesize() the output is 0 as it should be. Also the "corrupt.zip" is not corrupt at all, you can unzip it just fine with regular unzip found in pretty much every *nix. :) Previous Comments: ------------------------------------------------------------------------ [2009-04-28 11:58:44] php at codecaster dot nl I have installed the latest build, PHP 5.2.10-dev. Same results. From phpinfo(): Zip enabled Extension Version $Id: php_zip.c,v 1.1.2.50 2009/03/01 17:35:25 iliaa Exp $ Zip version 1.8.11 Libzip version 0.9.0 Updated test script (will output 2, should be 0): <?php // create empty file if (file_put_contents("empty.txt", "") === false) { die("Cannot write files"); } // zip it using ZipArchive $zip = new ZipArchive(); $zip->open("corrupt.zip", ZIPARCHIVE::CREATE); $zip->addFile("empty.txt"); $zip->close(); // open the file, show compressed size (returns 2, should be 0) if (($zip = zip_open("corrupt.zip"))) { // read first entry $zip_entry = zip_read($zip); echo "Compressed Size: " . zip_entry_compressedsize($zip_entry); zip_close($zip); } ?> ------------------------------------------------------------------------ [2009-04-22 14:38:46] php at codecaster dot nl Description: ------------ When you use ZipArchive->addFile() on an empty file, the file will be compressed anyway. This is incorrectly read by some (older) decompression programs. Reproduce code: --------------- if (file_put_contents("empty.txt", "") === false) { die("Cannot write files"); } $zip = new ZipArchive(); $zip->open("corrupt.zip", ZIPARCHIVE::CREATE); $zip->addFile("empty.txt"); $zip->close(); Expected result: ---------------- A zip file containing empty.txt with a size of 0 bytes and a compressed size of 0 bytes. Actual result: -------------- A zip file containing empty.txt with a size of 0 bytes and a compressed size of 2 bytes. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=48048&edit=1

« previous php.bugs (#136930) next »