From 93a3bc734337680ba936deb712ab555886d09dbe Mon Sep 17 00:00:00 2001 From: Glenn Randers-Pehrson Date: Sat, 23 Jan 2016 10:09:18 -0600 Subject: [PATCH] [libpng16] Revised workaround for Coverity issue in pngvalid.c --- ANNOUNCE | 5 +++-- CHANGES | 3 ++- contrib/libtests/pngvalid.c | 24 +++++++----------------- 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/ANNOUNCE b/ANNOUNCE index 1e4b686a3..df66424f3 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,4 +1,4 @@ -Libpng 1.6.22beta01 - January 18, 2016 +Libpng 1.6.22beta01 - January 22, 2016 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. @@ -25,7 +25,7 @@ Other information: Changes since the last public release (1.6.21): -Version 1.6.22beta01 [January 18, 2016] +Version 1.6.22beta01 [January 22, 2016] Changed PNG_USE_MKSTEMP to __COVERITY__ to select alternate "tmpfile()" implementation in contrib/libtests/pngstest.c Fixed NO_STDIO build of pngunknown.c to skip calling png_init_io() @@ -38,6 +38,7 @@ Version 1.6.22beta01 [January 18, 2016] disallows image width/height/format that *might* overflow. This is a quiet API change that limits in-memory image size (uncompressed) to less than 4GByte and image row size (stride) to less than 2GByte. + Revised workaround for false-positive Coverity issue in pngvalid.c. Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit diff --git a/CHANGES b/CHANGES index 24ff082ab..e159cc158 100644 --- a/CHANGES +++ b/CHANGES @@ -5484,7 +5484,7 @@ Version 1.6.21rc02 [January 7, 2016] Version 1.6.21 [January 15, 2016] Worked around a false-positive Coverity issue in pngvalid.c. -Version 1.6.22beta01 [January 18, 2016] +Version 1.6.22beta01 [January 22, 2016] Changed PNG_USE_MKSTEMP to __COVERITY__ to select alternate "tmpfile()" implementation in contrib/libtests/pngstest.c Fixed NO_STDIO build of pngunknown.c to skip calling png_init_io() @@ -5497,6 +5497,7 @@ Version 1.6.22beta01 [January 18, 2016] disallows image width/height/format that *might* overflow. This is a quiet API change that limits in-memory image size (uncompressed) to less than 4GByte and image row size (stride) to less than 2GByte. + Revised workaround for false-positive Coverity issue in pngvalid.c. Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit diff --git a/contrib/libtests/pngvalid.c b/contrib/libtests/pngvalid.c index 55d094592..a32b21f2c 100644 --- a/contrib/libtests/pngvalid.c +++ b/contrib/libtests/pngvalid.c @@ -1,7 +1,7 @@ /* pngvalid.c - validate libpng by constructing then reading png files. * - * Last changed in libpng 1.6.21 [January 15, 2016] + * Last changed in libpng 1.6.22 [(PENDING RELEASE)] * Copyright (c) 2014-2016 Glenn Randers-Pehrson * Written by John Cunningham Bowler * @@ -309,13 +309,8 @@ static void r16(png_uint_16p p16, size_t count) } } -#ifdef __COVERITY__ -# define R16(this)\ - r16(&(this), (sizeof (this))/2U/*(sizeof (png_uint_16))*/) -#else -# define R16(this)\ - r16(&(this), (sizeof (this))/(sizeof (png_uint_16))) -#endif +#define R16(this) r16(&(this), (sizeof (this))/(sizeof (png_uint_16))) +#define R16_1(this) r16(&(this), (size_t) 1U) #if defined PNG_READ_RGB_TO_GRAY_SUPPORTED ||\ defined PNG_READ_FILLER_SUPPORTED @@ -331,13 +326,8 @@ static void r32(png_uint_32p p32, size_t count) } } -#ifdef __COVERITY__ -# define R32(this)\ - r32(&(this), (sizeof (this))/4U/*(sizeof (png_uint_32))*/) -#else -# define R32(this)\ - r32(&(this), (sizeof (this))/(sizeof (png_uint_32))) -#endif +#define R32(this) r32(&(this), (sizeof (this))/(sizeof (png_uint_32))) +#define R32_1(this) r32(&(this), (size_t) 1U) #endif /* READ_FILLER || READ_RGB_TO_GRAY */ @@ -350,7 +340,7 @@ random_mod(unsigned int max) { png_uint_16 x; - R16(x); + R16_1(x); return x % max; /* 0 .. max-1 */ } @@ -7313,7 +7303,7 @@ image_transform_png_set_rgb_to_gray_ini(const image_transform *this, png_uint_32 ru; double total; - R32(ru); + R32_1(ru); data.green_coefficient = total = (ru & 0xffff) / 65535.; ru >>= 16; data.red_coefficient = (1 - total) * (ru & 0xffff) / 65535.;