@@ -404,7 +404,7 @@ static int phar_stream_seek(php_stream *stream, zend_off_t offset, int whence, z
404
404
phar_entry_data * data = (phar_entry_data * )stream -> abstract ;
405
405
phar_entry_info * entry ;
406
406
int res ;
407
- zend_off_t temp ;
407
+ zend_ulong temp ;
408
408
409
409
if (data -> internal_file -> link ) {
410
410
entry = phar_get_link_source (data -> internal_file );
@@ -414,26 +414,28 @@ static int phar_stream_seek(php_stream *stream, zend_off_t offset, int whence, z
414
414
415
415
switch (whence ) {
416
416
case SEEK_END :
417
- temp = data -> zero + entry -> uncompressed_filesize + offset ;
417
+ temp = ( zend_ulong ) data -> zero + ( zend_ulong ) entry -> uncompressed_filesize + ( zend_ulong ) offset ;
418
418
break ;
419
419
case SEEK_CUR :
420
- temp = data -> zero + data -> position + offset ;
420
+ temp = ( zend_ulong ) data -> zero + ( zend_ulong ) data -> position + ( zend_ulong ) offset ;
421
421
break ;
422
422
case SEEK_SET :
423
- temp = data -> zero + offset ;
423
+ temp = ( zend_ulong ) data -> zero + ( zend_ulong ) offset ;
424
424
break ;
425
425
default :
426
426
temp = 0 ;
427
427
}
428
- if (temp > data -> zero + (zend_off_t ) entry -> uncompressed_filesize ) {
429
- * newoffset = -1 ;
428
+
429
+ zend_off_t temp_signed = (zend_off_t ) temp ;
430
+ if (temp_signed > data -> zero + (zend_off_t ) entry -> uncompressed_filesize ) {
431
+ * newoffset = -1 ; /* FIXME: this will invalidate the ZEND_ASSERT(stream->position >= 0); assertion in streams.c */
430
432
return -1 ;
431
433
}
432
- if (temp < data -> zero ) {
433
- * newoffset = -1 ;
434
+ if (temp_signed < data -> zero ) {
435
+ * newoffset = -1 ; /* FIXME: this will invalidate the ZEND_ASSERT(stream->position >= 0); assertion in streams.c */
434
436
return -1 ;
435
437
}
436
- res = php_stream_seek (data -> fp , temp , SEEK_SET );
438
+ res = php_stream_seek (data -> fp , temp_signed , SEEK_SET );
437
439
* newoffset = php_stream_tell (data -> fp ) - data -> zero ;
438
440
data -> position = * newoffset ;
439
441
return res ;
0 commit comments