Bug #52091 [Opn->Asn]: ZipArchive: CRC32 errors / corrupted archives not reported

From: Date: Sun, 20 Jun 2010 15:49:45 +0000
Subject: Bug #52091 [Opn->Asn]: ZipArchive: CRC32 errors / corrupted archives not reported
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-151654@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=52091&edit=1

 ID:               52091
 Updated by:       felipe@php.net
 Reported by:      hardcorevenom at gmx dot de
 Summary:          ZipArchive: CRC32 errors / corrupted archives not
                   reported
-Status:           Open
+Status:           Assigned
 Type:             Bug
 Package:          Zip Related
 Operating System: Linux
 PHP Version:      5.2.13
-Assigned To:      
+Assigned To:      pajoye



Previous Comments:
------------------------------------------------------------------------
[2010-06-16 00:35:49] hardcorevenom at gmx dot de

"Actual result" should be
CRC32 errors are reported not always.

------------------------------------------------------------------------
[2010-06-15 23:29:45] hardcorevenom at gmx dot de

Summary modified.

------------------------------------------------------------------------
[2010-06-15 23:26:34] hardcorevenom at gmx dot de

Description:
------------
I corrupted a file using a hex editor.
"echo shell_exec('unzip -t file')" shows the CRC32 mismatch.

ZipArchive::extractTo() doesn't report CRC32 errors.

Reading a stream received from ZipArchive::getStream('myfile') echoes a
CRC error if the number of bytes read with one fread() is below 2157
bytes.


Test script:
---------------
$zip = new ZipArchive();
if ($zip->open('test.zip')) {
  zip->extractTo('mydir'); //no error printed

  $fp = $z->getStream('brokenfile');
  while (!feof($fp)) {
    $buf .= fread($fp, 2048+108); //CRC error printed
  }
  $fclose($fp);

  $fp = $z->getStream('brokenfile');
  while (!feof($fp)) {
    $buf .= fread($fp, 2048+109); //CRC error NOT printed
  }
  $fclose($fp);

  zip.close()
}

Expected result:
----------------
A CRC32 error report that can be handled.

The one from "fread($fp, 2048+108)" is fine: "Warning: fread()
[function.fread]: Zip stream error: CRC error in ..." (can be handled
with "ob_get_contents()");

For "ZipArchive::extractTo()" the corrupt file(s) should be printed.

Actual result:
--------------
CRC32 errors are reported always.


------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=52091&edit=1


Thread (11 messages)

« previous php.bugs (#151654) next »