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