mirror of
https://git.code.sf.net/p/libpng/code.git
synced 2025-07-10 18:04:09 +02:00
[libpng15] Removed non-working progressive reader 'skip' function.
This commit is contained in:
parent
ab096c961b
commit
d522ff063f
5
ANNOUNCE
5
ANNOUNCE
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
Libpng 1.5.23beta02 - June 2, 2015
|
Libpng 1.5.23beta02 - June 3, 2015
|
||||||
|
|
||||||
This is not intended to be a public release. It will be replaced
|
This is not intended to be a public release. It will be replaced
|
||||||
within a few weeks by a public version or by another test version.
|
within a few weeks by a public version or by another test version.
|
||||||
@ -38,13 +38,14 @@ Version 1.5.23beta01 [May 21, 2015]
|
|||||||
Avoid a harmless potential integer overflow in png_XYZ_from_xy() (Bug
|
Avoid a harmless potential integer overflow in png_XYZ_from_xy() (Bug
|
||||||
report from Christopher Ferris).
|
report from Christopher Ferris).
|
||||||
|
|
||||||
Version 1.5.23beta02 [June 2, 2015]
|
Version 1.5.23beta02 [June 3, 2015]
|
||||||
Removed WRITE_WEIGHTED_FILTERED code, to save a few kbytes of the
|
Removed WRITE_WEIGHTED_FILTERED code, to save a few kbytes of the
|
||||||
compiled library size. It never worked properly and as far as we can
|
compiled library size. It never worked properly and as far as we can
|
||||||
tell, no one uses it. The png_set_filter_heuristics() and
|
tell, no one uses it. The png_set_filter_heuristics() and
|
||||||
png_set_filter_heuristics_fixed() APIs are retained but deprecated
|
png_set_filter_heuristics_fixed() APIs are retained but deprecated
|
||||||
and do nothing.
|
and do nothing.
|
||||||
Quieted Coverity issues in pngvalid.c.
|
Quieted Coverity issues in pngvalid.c.
|
||||||
|
Removed non-working progressive reader 'skip' function.
|
||||||
|
|
||||||
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
|
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
|
||||||
(subscription required; visit
|
(subscription required; visit
|
||||||
|
3
CHANGES
3
CHANGES
@ -4350,13 +4350,14 @@ Version 1.5.23beta01 [May 21, 2015]
|
|||||||
Avoid a harmless potential integer overflow in png_XYZ_from_xy() (Bug
|
Avoid a harmless potential integer overflow in png_XYZ_from_xy() (Bug
|
||||||
report from Christopher Ferris).
|
report from Christopher Ferris).
|
||||||
|
|
||||||
Version 1.5.23beta02 [June 2, 2015]
|
Version 1.5.23beta02 [June 3, 2015]
|
||||||
Removed WRITE_WEIGHTED_FILTERED code, to save a few kbytes of the
|
Removed WRITE_WEIGHTED_FILTERED code, to save a few kbytes of the
|
||||||
compiled library size. It never worked properly and as far as we can
|
compiled library size. It never worked properly and as far as we can
|
||||||
tell, no one uses it. The png_set_filter_heuristics() and
|
tell, no one uses it. The png_set_filter_heuristics() and
|
||||||
png_set_filter_heuristics_fixed() APIs are retained but deprecated
|
png_set_filter_heuristics_fixed() APIs are retained but deprecated
|
||||||
and do nothing.
|
and do nothing.
|
||||||
Quieted Coverity issues in pngvalid.c.
|
Quieted Coverity issues in pngvalid.c.
|
||||||
|
Removed non-working progressive reader 'skip' function.
|
||||||
|
|
||||||
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
|
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
|
||||||
(subscription required; visit
|
(subscription required; visit
|
||||||
|
110
pngpread.c
110
pngpread.c
@ -19,7 +19,6 @@
|
|||||||
#define PNG_READ_SIG_MODE 0
|
#define PNG_READ_SIG_MODE 0
|
||||||
#define PNG_READ_CHUNK_MODE 1
|
#define PNG_READ_CHUNK_MODE 1
|
||||||
#define PNG_READ_IDAT_MODE 2
|
#define PNG_READ_IDAT_MODE 2
|
||||||
#define PNG_SKIP_MODE 3
|
|
||||||
#define PNG_READ_tEXt_MODE 4
|
#define PNG_READ_tEXt_MODE 4
|
||||||
#define PNG_READ_zTXt_MODE 5
|
#define PNG_READ_zTXt_MODE 5
|
||||||
#define PNG_READ_DONE_MODE 6
|
#define PNG_READ_DONE_MODE 6
|
||||||
@ -71,32 +70,15 @@ png_process_data_pause(png_structp png_ptr, int save)
|
|||||||
png_uint_32 PNGAPI
|
png_uint_32 PNGAPI
|
||||||
png_process_data_skip(png_structp png_ptr)
|
png_process_data_skip(png_structp png_ptr)
|
||||||
{
|
{
|
||||||
png_uint_32 remaining = 0;
|
/* TODO: somewhere the implementation of this seems to have been lost,
|
||||||
|
* or abandoned. It was only to support some internal snooping done by
|
||||||
if (png_ptr != NULL && png_ptr->process_mode == PNG_SKIP_MODE &&
|
* Mozilla (i.e. back-door access to png_struct) in 1.4; apparently they
|
||||||
png_ptr->skip_length > 0)
|
* must have stopped doing it.
|
||||||
{
|
|
||||||
/* At the end of png_process_data the buffer size must be 0 (see the loop
|
|
||||||
* above) so we can detect a broken call here:
|
|
||||||
*/
|
*/
|
||||||
if (png_ptr->buffer_size != 0)
|
png_warning(png_ptr,
|
||||||
png_error(png_ptr,
|
"png_process_data_skip is not implemented in any current version"
|
||||||
"png_process_data_skip called inside png_process_data");
|
" of libpng");
|
||||||
|
return 0;
|
||||||
/* If is impossible for there to be a saved buffer at this point -
|
|
||||||
* otherwise we could not be in SKIP mode. This will also happen if
|
|
||||||
* png_process_skip is called inside png_process_data (but only very
|
|
||||||
* rarely.)
|
|
||||||
*/
|
|
||||||
if (png_ptr->save_buffer_size != 0)
|
|
||||||
png_error(png_ptr, "png_process_data_skip called with saved data");
|
|
||||||
|
|
||||||
remaining = png_ptr->skip_length;
|
|
||||||
png_ptr->skip_length = 0;
|
|
||||||
png_ptr->process_mode = PNG_READ_CHUNK_MODE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return remaining;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* What we do with the incoming data depends on what we were previously
|
/* What we do with the incoming data depends on what we were previously
|
||||||
@ -128,12 +110,6 @@ png_process_some_data(png_structp png_ptr, png_infop info_ptr)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case PNG_SKIP_MODE:
|
|
||||||
{
|
|
||||||
png_push_crc_finish(png_ptr);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
png_ptr->buffer_size = 0;
|
png_ptr->buffer_size = 0;
|
||||||
@ -564,76 +540,6 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
|
|||||||
png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
|
png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
|
||||||
}
|
}
|
||||||
|
|
||||||
void /* PRIVATE */
|
|
||||||
png_push_crc_skip(png_structp png_ptr, png_uint_32 skip)
|
|
||||||
{
|
|
||||||
png_ptr->process_mode = PNG_SKIP_MODE;
|
|
||||||
png_ptr->skip_length = skip;
|
|
||||||
}
|
|
||||||
|
|
||||||
void /* PRIVATE */
|
|
||||||
png_push_crc_finish(png_structp png_ptr)
|
|
||||||
{
|
|
||||||
if (png_ptr->skip_length && png_ptr->save_buffer_size)
|
|
||||||
{
|
|
||||||
png_size_t save_size = png_ptr->save_buffer_size;
|
|
||||||
png_uint_32 skip_length = png_ptr->skip_length;
|
|
||||||
|
|
||||||
/* We want the smaller of 'skip_length' and 'save_buffer_size', but
|
|
||||||
* they are of different types and we don't know which variable has the
|
|
||||||
* fewest bits. Carefully select the smaller and cast it to the type of
|
|
||||||
* the larger - this cannot overflow. Do not cast in the following test
|
|
||||||
* - it will break on either 16 or 64 bit platforms.
|
|
||||||
*/
|
|
||||||
if (skip_length < save_size)
|
|
||||||
save_size = (png_size_t)skip_length;
|
|
||||||
|
|
||||||
else
|
|
||||||
skip_length = (png_uint_32)save_size;
|
|
||||||
|
|
||||||
png_calculate_crc(png_ptr, png_ptr->save_buffer_ptr, save_size);
|
|
||||||
|
|
||||||
png_ptr->skip_length -= skip_length;
|
|
||||||
png_ptr->buffer_size -= save_size;
|
|
||||||
png_ptr->save_buffer_size -= save_size;
|
|
||||||
png_ptr->save_buffer_ptr += save_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (png_ptr->skip_length && png_ptr->current_buffer_size)
|
|
||||||
{
|
|
||||||
png_size_t save_size = png_ptr->current_buffer_size;
|
|
||||||
png_uint_32 skip_length = png_ptr->skip_length;
|
|
||||||
|
|
||||||
/* We want the smaller of 'skip_length' and 'current_buffer_size', here,
|
|
||||||
* the same problem exists as above and the same solution.
|
|
||||||
*/
|
|
||||||
if (skip_length < save_size)
|
|
||||||
save_size = (png_size_t)skip_length;
|
|
||||||
|
|
||||||
else
|
|
||||||
skip_length = (png_uint_32)save_size;
|
|
||||||
|
|
||||||
png_calculate_crc(png_ptr, png_ptr->current_buffer_ptr, save_size);
|
|
||||||
|
|
||||||
png_ptr->skip_length -= skip_length;
|
|
||||||
png_ptr->buffer_size -= save_size;
|
|
||||||
png_ptr->current_buffer_size -= save_size;
|
|
||||||
png_ptr->current_buffer_ptr += save_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!png_ptr->skip_length)
|
|
||||||
{
|
|
||||||
if (png_ptr->buffer_size < 4)
|
|
||||||
{
|
|
||||||
png_push_save_buffer(png_ptr);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
png_crc_finish(png_ptr, 0);
|
|
||||||
png_ptr->process_mode = PNG_READ_CHUNK_MODE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void PNGCBAPI
|
void PNGCBAPI
|
||||||
png_push_fill_buffer(png_structp png_ptr, png_bytep buffer, png_size_t length)
|
png_push_fill_buffer(png_structp png_ptr, png_bytep buffer, png_size_t length)
|
||||||
{
|
{
|
||||||
|
@ -1317,9 +1317,6 @@ PNG_EXTERN void png_push_read_chunk PNGARG((png_structp png_ptr,
|
|||||||
PNG_EXTERN void png_push_read_sig PNGARG((png_structp png_ptr,
|
PNG_EXTERN void png_push_read_sig PNGARG((png_structp png_ptr,
|
||||||
png_infop info_ptr));
|
png_infop info_ptr));
|
||||||
PNG_EXTERN void png_push_check_crc PNGARG((png_structp png_ptr));
|
PNG_EXTERN void png_push_check_crc PNGARG((png_structp png_ptr));
|
||||||
PNG_EXTERN void png_push_crc_skip PNGARG((png_structp png_ptr,
|
|
||||||
png_uint_32 length));
|
|
||||||
PNG_EXTERN void png_push_crc_finish PNGARG((png_structp png_ptr));
|
|
||||||
PNG_EXTERN void png_push_save_buffer PNGARG((png_structp png_ptr));
|
PNG_EXTERN void png_push_save_buffer PNGARG((png_structp png_ptr));
|
||||||
PNG_EXTERN void png_push_restore_buffer PNGARG((png_structp png_ptr,
|
PNG_EXTERN void png_push_restore_buffer PNGARG((png_structp png_ptr,
|
||||||
png_bytep buffer, png_size_t buffer_length));
|
png_bytep buffer, png_size_t buffer_length));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user