mirror of
https://github.com/php/php-src.git
synced 2024-09-22 02:17:32 +00:00
- Fixed bug #49072 (feof never returns true for damaged file in zip).
This commit is contained in:
parent
baf5d66614
commit
5ca051bf38
2
NEWS
2
NEWS
@ -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)
|
||||
|
@ -30,11 +30,11 @@ struct php_zip_stream_data_t {
|
||||
/* {{{ 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 @@ static size_t php_zip_ops_read(php_stream *stream, char *buf, size_t count TSRML
|
||||
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);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user