1
0
mirror of https://github.com/php/php-src.git synced 2026-04-25 17:08:14 +02:00

- Fixed bug #49072 (feof never returns true for damaged file in zip).

This commit is contained in:
Gustavo André dos Santos Lopes
2011-02-01 14:43:52 +00:00
parent 0927309852
commit 28cd40919d
+6 -4
View File
@@ -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);
}
/* }}} */