cataphract Tue, 01 Feb 2011 14:44:29 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=307917
Log: - Fixed bug #49072 (feof never returns true for damaged file in zip). Bug: http://bugs.php.net/49072 (Re-Opened) feof never returns true for damaged file in zip Changed paths: U php/php-src/branches/PHP_5_3/NEWS U php/php-src/branches/PHP_5_3/ext/zip/zip_stream.c Modified: php/php-src/branches/PHP_5_3/NEWS =================================================================== --- php/php-src/branches/PHP_5_3/NEWS 2011-02-01 14:43:52 UTC (rev 307916) +++ php/php-src/branches/PHP_5_3/NEWS 2011-02-01 14:44:29 UTC (rev 307917) @@ -158,6 +158,8 @@ . Fixed bug #53854 (Missing constants for compression type). (Richard, Adam) . Fixed bug #53885 (ZipArchive segfault with FL_UNCHANGED on empty archive). (Stas, Maksymilian Arciemowicz). + . Fixed bug #49072 (feof never returns true for damaged file in zip). + (Gustavo, Richard Quadling) - Fixed bug #51336 (snmprealwalk (snmp v1) does not handle end of OID tree correctly) (Boris Lytochkin) Modified: php/php-src/branches/PHP_5_3/ext/zip/zip_stream.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/zip/zip_stream.c 2011-02-01 14:43:52 UTC (rev 307916) +++ php/php-src/branches/PHP_5_3/ext/zip/zip_stream.c 2011-02-01 14:44:29 UTC (rev 307917) @@ -30,11 +30,11 @@ /* {{{ php_zip_ops_read */ static size_t php_zip_ops_read(php_stream *stream, char *buf, size_t count TSRMLS_DC) { - size_t n = 0; + ssize_t n = 0; STREAM_DATA_FROM_STREAM(); if (self->za && self->zf) { - n = (size_t)zip_fread(self->zf, buf, (int)count); + n = zip_fread(self->zf, buf, count); if (n < 0) { int ze, se; zip_file_error_get(self->zf, &ze, &se); @@ -42,13 +42,15 @@ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Zip stream error: %s", zip_file_strerror(self->zf)); return 0; } - if (n == 0 || n < count) { + /* cast count to signed value to avoid possibly negative n + * being cast to unsigned value */ + if (n == 0 || n < (ssize_t)count) { stream->eof = 1; } else { self->cursor += n; } } - return (n < 1 ? 0 : n); + return (n < 1 ? 0 : (size_t)n); } /* }}} */
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php