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

 ID:                 49072
 Updated by:         rquadl...@php.net
 Reported by:        TorokAlpar at Gmail dot com
 Summary:            feof never returns true for damaged file in zip
 Status:             Closed
 Type:               Bug
 Package:            Zip Related
 Operating System:   Windows Xp, Linux
 PHP Version:        5.3.0
-Assigned To:        
+Assigned To:        rquadling
 Block user comment: N
 Private report:     N

 New Comment:

The test
http://svn.php.net/viewvc/php/php-src/trunk/ext/zip/tests/bug49072.phpt
is currently failing.



>From what I can tell, the reason for the failure is that the when
processing
(http://svn.php.net/viewvc/php/php-src/trunk/ext/zip/zip_stream.c?view=annotate#l31),
the return type from zip_fread (line 37) is cast to size_t.



This is, at the most basic, an unsigned type. So, when comparing (n <
0), this will always be false.



And so any errors recording during the zip_fread() call will fail to be
passed on.



Removing the casting and having n as type int, allows the test to pass
and the appropriate error is generated.



Patch attached.


Previous Comments:
------------------------------------------------------------------------
[2009-08-12 08:36:40] paj...@php.net

Fixed in the pecl release 1.10.2 and patch applied to all branches (will
be in php 5.2.11 and 5.3.1).

------------------------------------------------------------------------
[2009-08-11 17:11:02] s...@php.net

Automatic comment from SVN on behalf of pajoye
Revision: http://svn.php.net/viewvc/?view=revision&revision=287102
Log: - merge fix for php bug #49072

------------------------------------------------------------------------
[2009-08-11 15:12:00] s...@php.net

Automatic comment from SVN on behalf of pajoye
Revision: http://svn.php.net/viewvc/?view=revision&revision=287095
Log: - fixed bug #49072, feof never returns true for damaged file in zip

------------------------------------------------------------------------
[2009-07-27 12:39:19] paj...@php.net

Please send me the archive you used to reproduce this problem.

------------------------------------------------------------------------
[2009-07-27 11:47:13] TorokAlpar at Gmail dot com

Description:
------------
Opening a damaged zip archive (7z reports CRC failed for the faulty
file), feof never return true, the script blocks, causing high CPU
usage. 



Please contact me to get a zip that produces this problem. I don't see
how can i attach it here

Reproduce code:
---------------
$o = new ZipArchive();

if (! $o->open('test.zip',ZipArchive::CHECKCONS)) {

        exit ('error can\'t open');

}

$o->getStream('file2'); // this file is ok

echo "OK";

$r = $o->getStream('file1'); // this file has a wrong crc

while (! feof($r)) {

        fread($r,1024);

}

echo "never here\n";



Expected result:
----------------
The script either reads the file ignoring the crc error, or reports the
error, but finishes.  

Actual result:
--------------
the script  never ends, and uses up the CPU


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



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

Reply via email to