From 5027cc9def98ace36a14b123a73fb2f973d744b7 Mon Sep 17 00:00:00 2001 From: Barry Harris <44396066+barry65536@users.noreply.github.com> Date: Sat, 7 Mar 2015 15:47:06 +0000 Subject: [PATCH] Update libpng to 1.6.16 --- ...libpng_v1615.txt => _fba_libpng_v1616.txt} | 0 src/dep/libs/libpng/png.c | 49 ++++++++++++++++--- src/dep/libs/libpng/png.h | 23 +++++---- src/dep/libs/libpng/pngconf.h | 2 +- src/dep/libs/libpng/pnglibconf.h | 4 +- src/dep/libs/libpng/pngrutil.c | 12 ++--- whatsnew.html | 1 + 7 files changed, 64 insertions(+), 27 deletions(-) rename src/dep/libs/libpng/{_fba_libpng_v1615.txt => _fba_libpng_v1616.txt} (100%) diff --git a/src/dep/libs/libpng/_fba_libpng_v1615.txt b/src/dep/libs/libpng/_fba_libpng_v1616.txt similarity index 100% rename from src/dep/libs/libpng/_fba_libpng_v1615.txt rename to src/dep/libs/libpng/_fba_libpng_v1616.txt diff --git a/src/dep/libs/libpng/png.c b/src/dep/libs/libpng/png.c index f0f0f94c5..94f2e9a3f 100644 --- a/src/dep/libs/libpng/png.c +++ b/src/dep/libs/libpng/png.c @@ -1,7 +1,7 @@ /* png.c - location for general purpose libpng functions * - * Last changed in libpng 1.6.15 [November 20, 2014] + * Last changed in libpng 1.6.16 [December 22, 2014] * Copyright (c) 1998-2014 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) @@ -14,7 +14,7 @@ #include "pngpriv.h" /* Generate a compiler error if there is an old png.h in the search path. */ -typedef png_libpng_version_1_6_15 Your_png_h_is_not_version_1_6_15; +typedef png_libpng_version_1_6_16 Your_png_h_is_not_version_1_6_16; /* Tells libpng that we have already handled the first "num_bytes" bytes * of the PNG file signature. If the PNG data is embedded into another @@ -769,13 +769,13 @@ png_get_copyright(png_const_structrp png_ptr) #else # ifdef __STDC__ return PNG_STRING_NEWLINE \ - "libpng version 1.6.15 - November 20, 2014" PNG_STRING_NEWLINE \ + "libpng version 1.6.16 - December 22, 2014" PNG_STRING_NEWLINE \ "Copyright (c) 1998-2014 Glenn Randers-Pehrson" PNG_STRING_NEWLINE \ "Copyright (c) 1996-1997 Andreas Dilger" PNG_STRING_NEWLINE \ "Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc." \ PNG_STRING_NEWLINE; # else - return "libpng version 1.6.15 - November 20, 2014\ + return "libpng version 1.6.16 - December 22, 2014\ Copyright (c) 1998-2014 Glenn Randers-Pehrson\ Copyright (c) 1996-1997 Andreas Dilger\ Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc."; @@ -1075,7 +1075,7 @@ png_colorspace_set_gamma(png_const_structrp png_ptr, png_colorspacerp colorspace, png_fixed_point gAMA) { /* Changed in libpng-1.5.4 to limit the values to ensure overflow can't - * occur. Since the fixed point representation is assymetrical it is + * occur. Since the fixed point representation is asymetrical it is * possible for 1/gamma to overflow the limit of 21474 and this means the * gamma value must be at least 5/100000 and hence at most 20000.0. For * safety the limits here are a little narrower. The values are 0.00016 to @@ -1324,7 +1324,7 @@ png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy) * (1/white-y), so we can immediately see that as white-y approaches 0 the * accuracy inherent in the cHRM chunk drops off substantially. * - * libpng arithmetic: a simple invertion of the above equations + * libpng arithmetic: a simple inversion of the above equations * ------------------------------------------------------------ * * white_scale = 1/white-y @@ -1817,7 +1817,7 @@ png_icc_profile_error(png_const_structrp png_ptr, png_colorspacerp colorspace, PNG_UNUSED(pos) /* This is recoverable, but make it unconditionally an app_error on write to - * avoid writing invalid ICC profiles into PNG files. (I.e. we handle them + * avoid writing invalid ICC profiles into PNG files (i.e., we handle them * on read, with a warning, but on write unless the app turns off * application errors the PNG won't be written.) */ @@ -1836,7 +1836,7 @@ png_colorspace_set_sRGB(png_const_structrp png_ptr, png_colorspacerp colorspace, /* sRGB sets known gamma, end points and (from the chunk) intent. */ /* IMPORTANT: these are not necessarily the values found in an ICC profile * because ICC profiles store values adapted to a D50 environment; it is - * expected that the ICC profile mediaWhitePointTag will be D50, see the + * expected that the ICC profile mediaWhitePointTag will be D50; see the * checks and code elsewhere to understand this better. * * These XYZ values, which are accurate to 5dp, produce rgb to gray @@ -2461,6 +2461,17 @@ png_colorspace_set_rgb_coefficients(png_structrp png_ptr) #endif /* COLORSPACE */ +#ifdef __GNUC__ +/* This exists solely to work round a warning from GNU C. */ +static int /* PRIVATE */ +png_gt(size_t a, size_t b) +{ + return a > b; +} +#else +# define png_gt(a,b) ((a) > (b)) +#endif + void /* PRIVATE */ png_check_IHDR(png_const_structrp png_ptr, png_uint_32 width, png_uint_32 height, int bit_depth, @@ -2480,6 +2491,28 @@ png_check_IHDR(png_const_structrp png_ptr, png_warning(png_ptr, "Invalid image width in IHDR"); error = 1; } + + else if (png_gt(width, + (PNG_SIZE_MAX >> 3) /* 8-byte RGBA pixels */ + - 48 /* big_row_buf hack */ + - 1 /* filter byte */ + - 7*8 /* rounding width to multiple of 8 pix */ + - 8)) /* extra max_pixel_depth pad */ + { + /* The size of the row must be within the limits of this architecture. + * Because the read code can perform arbitrary transformations the + * maximum size is checked here. Because the code in png_read_start_row + * adds extra space "for safety's sake" in several places a conservative + * limit is used here. + * + * NOTE: it would be far better to check the size that is actually used, + * but the effect in the real world is minor and the changes are more + * extensive, therefore much more dangerous and much more difficult to + * write in a way that avoids compiler warnings. + */ + png_warning(png_ptr, "Image width is too large for this architecture"); + error = 1; + } else { # ifdef PNG_SET_USER_LIMITS_SUPPORTED diff --git a/src/dep/libs/libpng/png.h b/src/dep/libs/libpng/png.h index 731816665..2a3590e2d 100644 --- a/src/dep/libs/libpng/png.h +++ b/src/dep/libs/libpng/png.h @@ -1,7 +1,7 @@ /* png.h - header file for PNG reference library * - * libpng version 1.6.15, November 20, 2014 + * libpng version 1.6.16, December 22, 2014 * Copyright (c) 1998-2014 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) @@ -11,7 +11,7 @@ * Authors and maintainers: * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat * libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger - * libpng versions 0.97, January 1998, through 1.6.15, November 20, 2014: Glenn + * libpng versions 0.97, January 1998, through 1.6.16, December 22, 2014: Glenn * See also "Contributing Authors", below. * * Note about libpng version numbers: @@ -209,6 +209,9 @@ * 1.6.15beta01-08 16 10615 16.so.16.15[.0] * 1.6.15rc01-03 16 10615 16.so.16.15[.0] * 1.6.15 16 10615 16.so.16.15[.0] + * 1.6.16beta01-03 16 10616 16.so.16.16[.0] + * 1.6.16rc01-02 16 10616 16.so.16.16[.0] + * 1.6.16 16 10616 16.so.16.16[.0] * * Henceforth the source version will match the shared-library major * and minor numbers; the shared-library major version number will be @@ -240,7 +243,7 @@ * * This code is released under the libpng license. * - * libpng versions 1.2.6, August 15, 2004, through 1.6.15, November 20, 2014, are + * libpng versions 1.2.6, August 15, 2004, through 1.6.16, December 22, 2014, are * Copyright (c) 2004, 2006-2014 Glenn Randers-Pehrson, and are * distributed according to the same disclaimer and license as libpng-1.2.5 * with the following individual added to the list of Contributing Authors: @@ -352,13 +355,13 @@ * Y2K compliance in libpng: * ========================= * - * November 20, 2014 + * December 22, 2014 * * Since the PNG Development group is an ad-hoc body, we can't make * an official declaration. * * This is your unofficial assurance that libpng from version 0.71 and - * upward through 1.6.15 are Y2K compliant. It is my belief that + * upward through 1.6.16 are Y2K compliant. It is my belief that * earlier versions were also Y2K compliant. * * Libpng only has two year fields. One is a 2-byte unsigned integer @@ -420,9 +423,9 @@ */ /* Version information for png.h - this should match the version in png.c */ -#define PNG_LIBPNG_VER_STRING "1.6.15" +#define PNG_LIBPNG_VER_STRING "1.6.16" #define PNG_HEADER_VERSION_STRING \ - " libpng version 1.6.15 - November 20, 2014\n" + " libpng version 1.6.16 - December 22, 2014\n" #define PNG_LIBPNG_VER_SONUM 16 #define PNG_LIBPNG_VER_DLLNUM 16 @@ -430,7 +433,7 @@ /* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */ #define PNG_LIBPNG_VER_MAJOR 1 #define PNG_LIBPNG_VER_MINOR 6 -#define PNG_LIBPNG_VER_RELEASE 15 +#define PNG_LIBPNG_VER_RELEASE 16 /* This should match the numeric part of the final component of * PNG_LIBPNG_VER_STRING, omitting any leading zero: @@ -461,7 +464,7 @@ * version 1.0.0 was mis-numbered 100 instead of 10000). From * version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release */ -#define PNG_LIBPNG_VER 10615 /* 1.6.15 */ +#define PNG_LIBPNG_VER 10616 /* 1.6.16 */ /* Library configuration: these options cannot be changed after * the library has been built. @@ -566,7 +569,7 @@ extern "C" { /* This triggers a compiler error in png.c, if png.c and png.h * do not agree upon the version number. */ -typedef char* png_libpng_version_1_6_15; +typedef char* png_libpng_version_1_6_16; /* Basic control structions. Read libpng-manual.txt or libpng.3 for more info. * diff --git a/src/dep/libs/libpng/pngconf.h b/src/dep/libs/libpng/pngconf.h index db9ed4839..9453915e4 100644 --- a/src/dep/libs/libpng/pngconf.h +++ b/src/dep/libs/libpng/pngconf.h @@ -1,7 +1,7 @@ /* pngconf.h - machine configurable file for libpng * - * libpng version 1.6.15,November 20, 2014 + * libpng version 1.6.16,December 22, 2014 * * Copyright (c) 1998-2014 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/src/dep/libs/libpng/pnglibconf.h b/src/dep/libs/libpng/pnglibconf.h index 74b9bb266..ed16adb35 100644 --- a/src/dep/libs/libpng/pnglibconf.h +++ b/src/dep/libs/libpng/pnglibconf.h @@ -1,8 +1,8 @@ -/* libpng 1.6.15 STANDARD API DEFINITION */ +/* libpng 1.6.16 STANDARD API DEFINITION */ /* pnglibconf.h - library build configuration */ -/* Libpng version 1.6.15 - November 20, 2014 */ +/* Libpng version 1.6.16 - December 22, 2014 */ /* Copyright (c) 1998-2014 Glenn Randers-Pehrson */ diff --git a/src/dep/libs/libpng/pngrutil.c b/src/dep/libs/libpng/pngrutil.c index 4e9fbe7ce..6b12e7261 100644 --- a/src/dep/libs/libpng/pngrutil.c +++ b/src/dep/libs/libpng/pngrutil.c @@ -788,6 +788,7 @@ png_inflate_read(png_structrp png_ptr, png_bytep read_buffer, uInt read_size, #endif /* Read and check the IDHR chunk */ + void /* PRIVATE */ png_handle_IHDR(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) { @@ -852,8 +853,7 @@ png_handle_IHDR(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) } /* Set up other useful info */ - png_ptr->pixel_depth = (png_byte)(png_ptr->bit_depth * - png_ptr->channels); + png_ptr->pixel_depth = (png_byte)(png_ptr->bit_depth * png_ptr->channels); png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, png_ptr->width); png_debug1(3, "bit_depth = %d", png_ptr->bit_depth); png_debug1(3, "channels = %d", png_ptr->channels); @@ -3003,7 +3003,7 @@ png_combine_row(png_const_structrp png_ptr, png_bytep dp, int display) { unsigned int pixel_depth = png_ptr->transformed_pixel_depth; png_const_bytep sp = png_ptr->row_buf + 1; - png_uint_32 row_width = png_ptr->width; + png_alloc_size_t row_width = png_ptr->width; unsigned int pass = png_ptr->pass; png_bytep end_ptr = 0; png_byte end_byte = 0; @@ -3278,7 +3278,7 @@ png_combine_row(png_const_structrp png_ptr, png_bytep dp, int display) /* But don't allow this number to exceed the actual row width. */ if (bytes_to_copy > row_width) - bytes_to_copy = row_width; + bytes_to_copy = (unsigned int)/*SAFE*/row_width; } else /* normal row; Adam7 only ever gives us one pixel to copy. */ @@ -3458,7 +3458,7 @@ png_combine_row(png_const_structrp png_ptr, png_bytep dp, int display) dp += bytes_to_jump; row_width -= bytes_to_jump; if (bytes_to_copy > row_width) - bytes_to_copy = row_width; + bytes_to_copy = (unsigned int)/*SAFE*/row_width; } } @@ -4228,7 +4228,7 @@ png_read_start_row(png_structrp png_ptr) max_pixel_depth = png_ptr->pixel_depth; - /* WARNING: * png_read_transform_info (pngrtran.c) performs a simpliar set of + /* WARNING: * png_read_transform_info (pngrtran.c) performs a simpler set of * calculations to calculate the final pixel depth, then * png_do_read_transforms actually does the transforms. This means that the * code which effectively calculates this value is actually repeated in three diff --git a/whatsnew.html b/whatsnew.html index c1e4dd711..9466dae2b 100644 --- a/whatsnew.html +++ b/whatsnew.html @@ -198,6 +198,7 @@
  • Added support to the interface for a third YM2203 [barry]
  • Added dat file support for Sega Master System and Game Gear [barry]
  • Added filter to Game Selection dialog for Game Gear [barry]
  • +
  • Updated the libpng library to v1.6.16 [barry]
  • Synced sets with MAME 0.159 [barry, JacKc]