* libtiff/tif_pixarlog.c: avoid zlib error messages to pass a NULL
string to %s formatter, which is undefined behaviour in sprintf().
This commit is contained in:
parent
7dfc35c299
commit
62382d0653
@ -1,3 +1,8 @@
|
||||
2015-12-27 Even Rouault <even.rouault at spatialys.com>
|
||||
|
||||
* libtiff/tif_pixarlog.c: avoid zlib error messages to pass a NULL
|
||||
string to %s formatter, which is undefined behaviour in sprintf().
|
||||
|
||||
2015-12-27 Even Rouault <even.rouault at spatialys.com>
|
||||
|
||||
* libtiff/tif_next.c: fix potential out-of-bound write in NeXTDecode()
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: tif_pixarlog.c,v 1.42 2015-11-22 22:37:27 erouault Exp $ */
|
||||
/* $Id: tif_pixarlog.c,v 1.43 2015-12-27 20:14:11 erouault Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996-1997 Sam Leffler
|
||||
@ -45,15 +45,15 @@
|
||||
* input is assumed to be unsigned linear color values that represent
|
||||
* the range 0-1. In the case of IEEE values, the 0-1 range is assumed to
|
||||
* be the normal linear color range, in addition over 1 values are
|
||||
* accepted up to a value of about 25.0 to encode "hot" hightlights and such.
|
||||
* accepted up to a value of about 25.0 to encode "hot" highlights and such.
|
||||
* The encoding is lossless for 8-bit values, slightly lossy for the
|
||||
* other bit depths. The actual color precision should be better
|
||||
* than the human eye can perceive with extra room to allow for
|
||||
* error introduced by further image computation. As with any quantized
|
||||
* color format, it is possible to perform image calculations which
|
||||
* expose the quantization error. This format should certainly be less
|
||||
* susceptable to such errors than standard 8-bit encodings, but more
|
||||
* susceptable than straight 16-bit or 32-bit encodings.
|
||||
* susceptible to such errors than standard 8-bit encodings, but more
|
||||
* susceptible than straight 16-bit or 32-bit encodings.
|
||||
*
|
||||
* On reading the internal format is converted to the desired output format.
|
||||
* The program can request which format it desires by setting the internal
|
||||
@ -704,7 +704,7 @@ PixarLogSetupDecode(TIFF* tif)
|
||||
}
|
||||
|
||||
if (inflateInit(&sp->stream) != Z_OK) {
|
||||
TIFFErrorExt(tif->tif_clientdata, module, "%s", sp->stream.msg);
|
||||
TIFFErrorExt(tif->tif_clientdata, module, "%s", sp->stream.msg ? sp->stream.msg : "(null)");
|
||||
return (0);
|
||||
} else {
|
||||
sp->state |= PLSTATE_INIT;
|
||||
@ -791,14 +791,14 @@ PixarLogDecode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s)
|
||||
if (state == Z_DATA_ERROR) {
|
||||
TIFFErrorExt(tif->tif_clientdata, module,
|
||||
"Decoding error at scanline %lu, %s",
|
||||
(unsigned long) tif->tif_row, sp->stream.msg);
|
||||
(unsigned long) tif->tif_row, sp->stream.msg ? sp->stream.msg : "(null)");
|
||||
if (inflateSync(&sp->stream) != Z_OK)
|
||||
return (0);
|
||||
continue;
|
||||
}
|
||||
if (state != Z_OK) {
|
||||
TIFFErrorExt(tif->tif_clientdata, module, "ZLib error: %s",
|
||||
sp->stream.msg);
|
||||
sp->stream.msg ? sp->stream.msg : "(null)");
|
||||
return (0);
|
||||
}
|
||||
} while (sp->stream.avail_out > 0);
|
||||
@ -900,7 +900,7 @@ PixarLogSetupEncode(TIFF* tif)
|
||||
}
|
||||
|
||||
if (deflateInit(&sp->stream, sp->quality) != Z_OK) {
|
||||
TIFFErrorExt(tif->tif_clientdata, module, "%s", sp->stream.msg);
|
||||
TIFFErrorExt(tif->tif_clientdata, module, "%s", sp->stream.msg ? sp->stream.msg : "(null)");
|
||||
return (0);
|
||||
} else {
|
||||
sp->state |= PLSTATE_INIT;
|
||||
@ -1175,7 +1175,7 @@ PixarLogEncode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
|
||||
do {
|
||||
if (deflate(&sp->stream, Z_NO_FLUSH) != Z_OK) {
|
||||
TIFFErrorExt(tif->tif_clientdata, module, "Encoder error: %s",
|
||||
sp->stream.msg);
|
||||
sp->stream.msg ? sp->stream.msg : "(null)");
|
||||
return (0);
|
||||
}
|
||||
if (sp->stream.avail_out == 0) {
|
||||
@ -1217,7 +1217,7 @@ PixarLogPostEncode(TIFF* tif)
|
||||
break;
|
||||
default:
|
||||
TIFFErrorExt(tif->tif_clientdata, module, "ZLib error: %s",
|
||||
sp->stream.msg);
|
||||
sp->stream.msg ? sp->stream.msg : "(null)");
|
||||
return (0);
|
||||
}
|
||||
} while (state != Z_STREAM_END);
|
||||
@ -1229,7 +1229,7 @@ PixarLogClose(TIFF* tif)
|
||||
{
|
||||
TIFFDirectory *td = &tif->tif_dir;
|
||||
|
||||
/* In a really sneaky (and really incorrect, and untruthfull, and
|
||||
/* In a really sneaky (and really incorrect, and untruthful, and
|
||||
* troublesome, and error-prone) maneuver that completely goes against
|
||||
* the spirit of TIFF, and breaks TIFF, on close, we covertly
|
||||
* modify both bitspersample and sampleformat in the directory to
|
||||
@ -1287,7 +1287,7 @@ PixarLogVSetField(TIFF* tif, uint32 tag, va_list ap)
|
||||
if (deflateParams(&sp->stream,
|
||||
sp->quality, Z_DEFAULT_STRATEGY) != Z_OK) {
|
||||
TIFFErrorExt(tif->tif_clientdata, module, "ZLib error: %s",
|
||||
sp->stream.msg);
|
||||
sp->stream.msg ? sp->stream.msg : "(null)");
|
||||
return (0);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user