com php-src: Ensure that the stream position is kept between reads: ext/exif/exif.c ext/exif/tests/exif_read_data_streams_s eek.phpt

From: Date: Thu, 13 Jul 2017 23:59:23 +0000
Subject: com php-src: Ensure that the stream position is kept between reads: ext/exif/exif.c ext/exif/tests/exif_read_data_streams_s eek.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-98551@lists.php.net to get a copy of this message
Commit: 997e2e5452140fe10ea917d445d33b16a9a84681 Author: Kalle Sommer Nielsen <kalle@php.net> Fri, 14 Jul 2017 01:59:23 +0200 Parents: f7d9f6456ccba63cbf582d2269cfcaa3da9600f4 Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=997e2e5452140fe10ea917d445d33b16a9a84681 Log: Ensure that the stream position is kept between reads Changed paths: M ext/exif/exif.c A ext/exif/tests/exif_read_data_streams_seek.phpt Diff: diff --git a/ext/exif/exif.c b/ext/exif/exif.c index 7558374..9ac323e 100644 --- a/ext/exif/exif.c +++ b/ext/exif/exif.c @@ -4305,9 +4305,9 @@ static int exif_discard_imageinfo(image_info_type *ImageInfo) } /* }}} */ -/* {{{ exif_read_from_stream +/* {{{ exif_read_from_impl */ -static int exif_read_from_stream(image_info_type *ImageInfo, php_stream *stream, int read_thumbnail, int read_all) +static int exif_read_from_impl(image_info_type *ImageInfo, php_stream *stream, int read_thumbnail, int read_all) { int ret; zend_stat_t st; @@ -4368,6 +4368,27 @@ static int exif_read_from_stream(image_info_type *ImageInfo, php_stream *stream, } /* }}} */ +/* {{{ exif_read_from_stream + */ +static int exif_read_from_stream(image_info_type *ImageInfo, php_stream *stream, int read_thumbnail, int read_all) +{ + int ret; + off_t old_pos = php_stream_tell(stream); + + if (old_pos) { + php_stream_seek(stream, 0, SEEK_SET); + } + + ret = exif_read_from_impl(ImageInfo, stream, read_thumbnail, read_all); + + if (old_pos) { + php_stream_seek(stream, old_pos, SEEK_SET); + } + + return ret; +} +/* }}} */ + /* {{{ exif_read_from_file */ static int exif_read_from_file(image_info_type *ImageInfo, char *FileName, int read_thumbnail, int read_all) diff --git a/ext/exif/tests/exif_read_data_streams_seek.phpt b/ext/exif/tests/exif_read_data_streams_seek.phpt new file mode 100644 index 0000000..e3b2c99 --- /dev/null +++ b/ext/exif/tests/exif_read_data_streams_seek.phpt @@ -0,0 +1,21 @@ +--TEST-- +exif_read_data() with streams test +--SKIPIF-- +<?php if (!extension_loaded('exif')) print 'skip exif extension not available';?> +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- +<?php +$fp = fopen(__DIR__ . '/image027.tiff', 'rb'); + +fseek($fp, 100, SEEK_SET); + +exif_read_data($fp); + +var_dump(ftell($fp) === 100); + +fclose($fp); +?> +--EXPECT-- +bool(true)

« previous php.cvs (#98551) next »