mirror of
https://git.code.sf.net/p/libpng/code.git
synced 2025-07-10 18:04:09 +02:00
[libpng15] Merge with libpng16/pngtest.c, pngvalid.c, gregbook, pngminim
This commit is contained in:
parent
b555c55c6d
commit
5a945f3393
6
ANNOUNCE
6
ANNOUNCE
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
Libpng 1.5.28beta01 - August 18, 2016
|
Libpng 1.5.28beta01 - October 30, 2016
|
||||||
|
|
||||||
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.
|
||||||
@ -26,8 +26,8 @@ Other information:
|
|||||||
|
|
||||||
Changes since the last public release (1.5.27):
|
Changes since the last public release (1.5.27):
|
||||||
|
|
||||||
version 1.5.28beta01 [August 18, 2016]
|
version 1.5.28beta01 [October 30, 2016]
|
||||||
Merge with current libpng16 pngvalid.c
|
Merge with current libpng16 gregbook, pngvalid.c, pngtest.c
|
||||||
Fixed undefined behavior in png_push_save_buffer(). Do not call
|
Fixed undefined behavior in png_push_save_buffer(). Do not call
|
||||||
memcpy() with a null source, even if count is zero (Leon Scroggins III).
|
memcpy() with a null source, even if count is zero (Leon Scroggins III).
|
||||||
Added "Common linking failures" section to INSTALL.
|
Added "Common linking failures" section to INSTALL.
|
||||||
|
4
CHANGES
4
CHANGES
@ -4496,8 +4496,8 @@ version 1.5.27rc01 [May 14, 2016]
|
|||||||
version 1.5.27 [May 26, 2016]
|
version 1.5.27 [May 26, 2016]
|
||||||
No changes.
|
No changes.
|
||||||
|
|
||||||
version 1.5.28beta01 [August 18, 2016]
|
version 1.5.28beta01 [October 30, 2016]
|
||||||
Merge with current libpng16 pngvalid.c
|
Merge with current libpng16 gregbook, pngvalid.c, pngtest.c
|
||||||
Fixed undefined behavior in png_push_save_buffer(). Do not call
|
Fixed undefined behavior in png_push_save_buffer(). Do not call
|
||||||
memcpy() with a null source, even if count is zero (Leon Scroggins III).
|
memcpy() with a null source, even if count is zero (Leon Scroggins III).
|
||||||
Added "Common linking failures" section to INSTALL.
|
Added "Common linking failures" section to INSTALL.
|
||||||
|
@ -59,15 +59,16 @@ INCS = $(PNGINC) $(ZINC) $(XINC)
|
|||||||
RLIBSd = $(PNGLIBd) $(ZLIBd) $(XLIB) -lm
|
RLIBSd = $(PNGLIBd) $(ZLIBd) $(XLIB) -lm
|
||||||
RLIBSs = $(PNGLIBs) $(ZLIBs) $(XLIB) -lm
|
RLIBSs = $(PNGLIBs) $(ZLIBs) $(XLIB) -lm
|
||||||
WLIBSd = $(PNGLIBd) $(ZLIBd) -lm
|
WLIBSd = $(PNGLIBd) $(ZLIBd) -lm
|
||||||
WLIBSs = $(PNGLIBs) $(ZLIBs)
|
WLIBSs = $(PNGLIBs) $(ZLIBs) -lm
|
||||||
|
|
||||||
CC = gcc
|
CC = gcc
|
||||||
LD = gcc
|
LD = gcc
|
||||||
RM = rm -f
|
RM = rm -f
|
||||||
CPPFLAGS = $(INCS) -DFEATURE_LOOP
|
CPPFLAGS = $(INCS) -DFEATURE_LOOP
|
||||||
CFLAGS = -O -Wall
|
CFLAGS = -O -Wall
|
||||||
|
#CFLAGS = -O -W -Wall -Wextra -pedantic -ansi
|
||||||
# [note that -Wall is a gcc-specific compilation flag ("most warnings on")]
|
# [note that -Wall is a gcc-specific compilation flag ("most warnings on")]
|
||||||
# [-ansi, -pedantic and -W can also be used]
|
# [-ansi, -pedantic, -Wextra, and -W can also be used]
|
||||||
LDFLAGS =
|
LDFLAGS =
|
||||||
O = .o
|
O = .o
|
||||||
E =
|
E =
|
||||||
|
@ -15,7 +15,7 @@ of PBMPLUS/NetPBM) and converts them to PNG.
|
|||||||
|
|
||||||
The source code for all three demo programs currently compiles under
|
The source code for all three demo programs currently compiles under
|
||||||
Unix, OpenVMS, and 32-bit Windows. (Special thanks to Martin Zinser,
|
Unix, OpenVMS, and 32-bit Windows. (Special thanks to Martin Zinser,
|
||||||
zinser@decus.de, for making the necessary changes for OpenVMS and for
|
zinser at decus.de, for making the necessary changes for OpenVMS and for
|
||||||
providing an appropriate build script.) Build instructions can be found
|
providing an appropriate build script.) Build instructions can be found
|
||||||
below.
|
below.
|
||||||
|
|
||||||
|
@ -100,7 +100,8 @@ int readpng_init(FILE *infile, ulg *pWidth, ulg *pHeight)
|
|||||||
|
|
||||||
/* could pass pointers to user-defined error handlers instead of NULLs: */
|
/* could pass pointers to user-defined error handlers instead of NULLs: */
|
||||||
|
|
||||||
png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
|
png_ptr = png_create_read_struct(png_get_libpng_ver(NULL), NULL, NULL,
|
||||||
|
NULL);
|
||||||
if (!png_ptr)
|
if (!png_ptr)
|
||||||
return 4; /* out of memory */
|
return 4; /* out of memory */
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright (c) 1998-2007 Greg Roelofs. All rights reserved.
|
Copyright (c) 1998-2015 Greg Roelofs. All rights reserved.
|
||||||
|
|
||||||
This software is provided "as is," without warranty of any kind,
|
This software is provided "as is," without warranty of any kind,
|
||||||
express or implied. In no event shall the author or contributors
|
express or implied. In no event shall the author or contributors
|
||||||
@ -51,6 +51,11 @@
|
|||||||
along with this program; if not, write to the Free Software Foundation,
|
along with this program; if not, write to the Free Software Foundation,
|
||||||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Changelog:
|
||||||
|
2015-11-12 - Check return value of png_get_bKGD() (Glenn R-P)
|
||||||
|
|
||||||
---------------------------------------------------------------------------*/
|
---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
@ -69,6 +74,7 @@ static void readpng2_row_callback(png_structp png_ptr, png_bytep new_row,
|
|||||||
png_uint_32 row_num, int pass);
|
png_uint_32 row_num, int pass);
|
||||||
static void readpng2_end_callback(png_structp png_ptr, png_infop info_ptr);
|
static void readpng2_end_callback(png_structp png_ptr, png_infop info_ptr);
|
||||||
static void readpng2_error_handler(png_structp png_ptr, png_const_charp msg);
|
static void readpng2_error_handler(png_structp png_ptr, png_const_charp msg);
|
||||||
|
static void readpng2_warning_handler(png_structp png_ptr, png_const_charp msg);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -103,8 +109,8 @@ int readpng2_init(mainprog_info *mainprog_ptr)
|
|||||||
|
|
||||||
/* could also replace libpng warning-handler (final NULL), but no need: */
|
/* could also replace libpng warning-handler (final NULL), but no need: */
|
||||||
|
|
||||||
png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, mainprog_ptr,
|
png_ptr = png_create_read_struct(png_get_libpng_ver(NULL), mainprog_ptr,
|
||||||
readpng2_error_handler, NULL);
|
readpng2_error_handler, readpng2_warning_handler);
|
||||||
if (!png_ptr)
|
if (!png_ptr)
|
||||||
return 4; /* out of memory */
|
return 4; /* out of memory */
|
||||||
|
|
||||||
@ -136,29 +142,23 @@ int readpng2_init(mainprog_info *mainprog_ptr)
|
|||||||
* used, i.e., all chunks recognized by libpng except for IHDR, PLTE, IDAT,
|
* used, i.e., all chunks recognized by libpng except for IHDR, PLTE, IDAT,
|
||||||
* IEND, tRNS, bKGD, gAMA, and sRGB (small performance improvement) */
|
* IEND, tRNS, bKGD, gAMA, and sRGB (small performance improvement) */
|
||||||
{
|
{
|
||||||
/* These byte strings were copied from png.h. If a future libpng
|
/* These byte strings were copied from png.h. If a future version
|
||||||
* version recognizes more chunks, add them to this list. If a
|
* of readpng2.c recognizes more chunks, add them to this list.
|
||||||
* future version of readpng2.c recognizes more chunks, delete them
|
*/
|
||||||
* from this list. */
|
static PNG_CONST png_byte chunks_to_process[] = {
|
||||||
static /* const */ png_byte chunks_to_ignore[] = {
|
98, 75, 71, 68, '\0', /* bKGD */
|
||||||
99, 72, 82, 77, '\0', /* cHRM */
|
103, 65, 77, 65, '\0', /* gAMA */
|
||||||
104, 73, 83, 84, '\0', /* hIST */
|
115, 82, 71, 66, '\0', /* sRGB */
|
||||||
105, 67, 67, 80, '\0', /* iCCP */
|
|
||||||
105, 84, 88, 116, '\0', /* iTXt */
|
|
||||||
111, 70, 70, 115, '\0', /* oFFs */
|
|
||||||
112, 67, 65, 76, '\0', /* pCAL */
|
|
||||||
112, 72, 89, 115, '\0', /* pHYs */
|
|
||||||
115, 66, 73, 84, '\0', /* sBIT */
|
|
||||||
115, 67, 65, 76, '\0', /* sCAL */
|
|
||||||
115, 80, 76, 84, '\0', /* sPLT */
|
|
||||||
115, 84, 69, 82, '\0', /* sTER */
|
|
||||||
116, 69, 88, 116, '\0', /* tEXt */
|
|
||||||
116, 73, 77, 69, '\0', /* tIME */
|
|
||||||
122, 84, 88, 116, '\0' /* zTXt */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
png_set_keep_unknown_chunks(png_ptr, 1 /* PNG_HANDLE_CHUNK_NEVER */,
|
/* Ignore all chunks except for IHDR, PLTE, tRNS, IDAT, and IEND */
|
||||||
chunks_to_ignore, sizeof(chunks_to_ignore)/5);
|
png_set_keep_unknown_chunks(png_ptr, -1 /* PNG_HANDLE_CHUNK_NEVER */,
|
||||||
|
NULL, -1);
|
||||||
|
|
||||||
|
/* But do not ignore chunks in the "chunks_to_process" list */
|
||||||
|
png_set_keep_unknown_chunks(png_ptr,
|
||||||
|
0 /* PNG_HANDLE_CHUNK_AS_DEFAULT */, chunks_to_process,
|
||||||
|
sizeof(chunks_to_process)/5);
|
||||||
}
|
}
|
||||||
#endif /* PNG_HANDLE_AS_UNKNOWN_SUPPORTED */
|
#endif /* PNG_HANDLE_AS_UNKNOWN_SUPPORTED */
|
||||||
|
|
||||||
@ -266,18 +266,19 @@ static void readpng2_info_callback(png_structp png_ptr, png_infop info_ptr)
|
|||||||
/* since we know we've read all of the PNG file's "header" (i.e., up
|
/* since we know we've read all of the PNG file's "header" (i.e., up
|
||||||
* to IDAT), we can check for a background color here */
|
* to IDAT), we can check for a background color here */
|
||||||
|
|
||||||
if (mainprog_ptr->need_bgcolor &&
|
if (mainprog_ptr->need_bgcolor)
|
||||||
png_get_valid(png_ptr, info_ptr, PNG_INFO_bKGD))
|
|
||||||
{
|
{
|
||||||
png_color_16p pBackground;
|
png_color_16p pBackground;
|
||||||
|
|
||||||
/* it is not obvious from the libpng documentation, but this function
|
/* it is not obvious from the libpng documentation, but this function
|
||||||
* takes a pointer to a pointer, and it always returns valid red,
|
* takes a pointer to a pointer, and it always returns valid red,
|
||||||
* green and blue values, regardless of color_type: */
|
* green and blue values, regardless of color_type: */
|
||||||
png_get_bKGD(png_ptr, info_ptr, &pBackground);
|
if (png_get_bKGD(png_ptr, info_ptr, &pBackground))
|
||||||
|
{
|
||||||
|
|
||||||
/* however, it always returns the raw bKGD data, regardless of any
|
/* however, it always returns the raw bKGD data, regardless of any
|
||||||
* bit-depth transformations, so check depth and adjust if necessary */
|
* bit-depth transformations, so check depth and adjust if necessary
|
||||||
|
*/
|
||||||
if (bit_depth == 16) {
|
if (bit_depth == 16) {
|
||||||
mainprog_ptr->bg_red = pBackground->red >> 8;
|
mainprog_ptr->bg_red = pBackground->red >> 8;
|
||||||
mainprog_ptr->bg_green = pBackground->green >> 8;
|
mainprog_ptr->bg_green = pBackground->green >> 8;
|
||||||
@ -298,6 +299,7 @@ static void readpng2_info_callback(png_structp png_ptr, png_infop info_ptr)
|
|||||||
mainprog_ptr->bg_blue = (uch)pBackground->blue;
|
mainprog_ptr->bg_blue = (uch)pBackground->blue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* as before, let libpng expand palette images to RGB, low-bit-depth
|
/* as before, let libpng expand palette images to RGB, low-bit-depth
|
||||||
@ -453,6 +455,8 @@ static void readpng2_end_callback(png_structp png_ptr, png_infop info_ptr)
|
|||||||
|
|
||||||
/* all done */
|
/* all done */
|
||||||
|
|
||||||
|
(void)info_ptr; /* Unused */
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -473,7 +477,12 @@ void readpng2_cleanup(mainprog_info *mainprog_ptr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void readpng2_warning_handler(png_structp png_ptr, png_const_charp msg)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "readpng2 libpng warning: %s\n", msg);
|
||||||
|
fflush(stderr);
|
||||||
|
(void)png_ptr; /* Unused */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void readpng2_error_handler(png_structp png_ptr, png_const_charp msg)
|
static void readpng2_error_handler(png_structp png_ptr, png_const_charp msg)
|
||||||
|
@ -163,8 +163,12 @@ uch *readpng_get_image(double display_exponent, int *pChannels, ulg *pRowbytes)
|
|||||||
|
|
||||||
/* now we can go ahead and just read the whole image */
|
/* now we can go ahead and just read the whole image */
|
||||||
|
|
||||||
fread(image_data, 1L, rowbytes*height, saved_infile);
|
if (fread(image_data, 1L, rowbytes*height, saved_infile) <
|
||||||
|
rowbytes*height) {
|
||||||
|
free (image_data);
|
||||||
|
image_data = NULL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
return image_data;
|
return image_data;
|
||||||
}
|
}
|
||||||
|
@ -182,7 +182,7 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode)
|
|||||||
#ifndef __CYGWIN__
|
#ifndef __CYGWIN__
|
||||||
/* First reenable console output, which normally goes to the bit bucket
|
/* First reenable console output, which normally goes to the bit bucket
|
||||||
* for windowed apps. Closing the console window will terminate the
|
* for windowed apps. Closing the console window will terminate the
|
||||||
* app. Thanks to David.Geldreich@realviz.com for supplying the magical
|
* app. Thanks to David.Geldreich at realviz.com for supplying the magical
|
||||||
* incantation. */
|
* incantation. */
|
||||||
|
|
||||||
AllocConsole();
|
AllocConsole();
|
||||||
|
@ -26,6 +26,8 @@
|
|||||||
- 1.14: added support for X resources (thanks to Gerhard Niklasch)
|
- 1.14: added support for X resources (thanks to Gerhard Niklasch)
|
||||||
- 2.00: dual-licensed (added GNU GPL)
|
- 2.00: dual-licensed (added GNU GPL)
|
||||||
- 2.01: fixed improper display of usage screen on PNG error(s)
|
- 2.01: fixed improper display of usage screen on PNG error(s)
|
||||||
|
- 2.02: Added "void(argc);" statement to quiet pedantic compiler warnings
|
||||||
|
about unused variable (GR-P)
|
||||||
|
|
||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -80,7 +82,7 @@
|
|||||||
|
|
||||||
#define PROGNAME "rpng-x"
|
#define PROGNAME "rpng-x"
|
||||||
#define LONGNAME "Simple PNG Viewer for X"
|
#define LONGNAME "Simple PNG Viewer for X"
|
||||||
#define VERSION "2.01 of 16 March 2008"
|
#define VERSION "2.02 of 15 June 2014"
|
||||||
#define RESNAME "rpng" /* our X resource application name */
|
#define RESNAME "rpng" /* our X resource application name */
|
||||||
#define RESCLASS "Rpng" /* our X resource class name */
|
#define RESCLASS "Rpng" /* our X resource class name */
|
||||||
|
|
||||||
@ -279,15 +281,17 @@ int main(int argc, char **argv)
|
|||||||
"Usage: %s [-display xdpy] [-gamma exp] [-bgcolor bg] file.png\n"
|
"Usage: %s [-display xdpy] [-gamma exp] [-bgcolor bg] file.png\n"
|
||||||
" xdpy\tname of the target X display (e.g., ``hostname:0'')\n"
|
" xdpy\tname of the target X display (e.g., ``hostname:0'')\n"
|
||||||
" exp \ttransfer-function exponent (``gamma'') of the display\n"
|
" exp \ttransfer-function exponent (``gamma'') of the display\n"
|
||||||
"\t\t system in floating-point format (e.g., ``%.1f''); equal\n"
|
"\t\t system in floating-point format (e.g., ``%.1f''); equal\n",
|
||||||
|
PROGNAME, default_display_exponent);
|
||||||
|
|
||||||
|
fprintf(stderr, "\n"
|
||||||
"\t\t to the product of the lookup-table exponent (varies)\n"
|
"\t\t to the product of the lookup-table exponent (varies)\n"
|
||||||
"\t\t and the CRT exponent (usually 2.2); must be positive\n"
|
"\t\t and the CRT exponent (usually 2.2); must be positive\n"
|
||||||
" bg \tdesired background color in 7-character hex RGB format\n"
|
" bg \tdesired background color in 7-character hex RGB format\n"
|
||||||
"\t\t (e.g., ``#ff7700'' for orange: same as HTML colors);\n"
|
"\t\t (e.g., ``#ff7700'' for orange: same as HTML colors);\n"
|
||||||
"\t\t used with transparent images\n"
|
"\t\t used with transparent images\n"
|
||||||
"\nPress Q, Esc or mouse button 1 (within image window, after image\n"
|
"\nPress Q, Esc or mouse button 1 (within image window, after image\n"
|
||||||
"is displayed) to quit.\n"
|
"is displayed) to quit.\n");
|
||||||
"\n", PROGNAME, default_display_exponent);
|
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -419,6 +423,8 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
rpng_x_cleanup();
|
rpng_x_cleanup();
|
||||||
|
|
||||||
|
(void)argc; /* Unused */
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,6 +33,8 @@
|
|||||||
- 2.02: fixed improper display of usage screen on PNG error(s); fixed
|
- 2.02: fixed improper display of usage screen on PNG error(s); fixed
|
||||||
unexpected-EOF and file-read-error cases
|
unexpected-EOF and file-read-error cases
|
||||||
- 2.03: removed runtime MMX-enabling/disabling and obsolete -mmx* options
|
- 2.03: removed runtime MMX-enabling/disabling and obsolete -mmx* options
|
||||||
|
- 2.04:
|
||||||
|
(GR-P)
|
||||||
|
|
||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -299,7 +301,7 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode)
|
|||||||
#ifndef __CYGWIN__
|
#ifndef __CYGWIN__
|
||||||
/* Next reenable console output, which normally goes to the bit bucket
|
/* Next reenable console output, which normally goes to the bit bucket
|
||||||
* for windowed apps. Closing the console window will terminate the
|
* for windowed apps. Closing the console window will terminate the
|
||||||
* app. Thanks to David.Geldreich@realviz.com for supplying the magical
|
* app. Thanks to David.Geldreich at realviz.com for supplying the magical
|
||||||
* incantation. */
|
* incantation. */
|
||||||
|
|
||||||
AllocConsole();
|
AllocConsole();
|
||||||
|
@ -90,7 +90,7 @@ int writepng_init(mainprog_info *mainprog_ptr)
|
|||||||
|
|
||||||
/* could also replace libpng warning-handler (final NULL), but no need: */
|
/* could also replace libpng warning-handler (final NULL), but no need: */
|
||||||
|
|
||||||
png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, mainprog_ptr,
|
png_ptr = png_create_write_struct(png_get_libpng_ver(NULL), mainprog_ptr,
|
||||||
writepng_error_handler, NULL);
|
writepng_error_handler, NULL);
|
||||||
if (!png_ptr)
|
if (!png_ptr)
|
||||||
return 4; /* out of memory */
|
return 4; /* out of memory */
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
|
|
||||||
/* pngvalid.c - validate libpng by constructing then reading png files.
|
/* pngvalid.c - validate libpng by constructing then reading png files.
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.6.24 [(PENDING RELEASE)]
|
* Last changed in libpng 1.6.26 [October 20, 2016]
|
||||||
* Copyright (c) 2014-2016 Glenn Randers-Pehrson
|
* Copyright (c) 2014-2016 John Cunningham Bowler
|
||||||
* Written by John Cunningham Bowler
|
|
||||||
*
|
*
|
||||||
* This code is released under the libpng license.
|
* This code is released under the libpng license.
|
||||||
* For conditions of distribution and use, see the disclaimer
|
* For conditions of distribution and use, see the disclaimer
|
||||||
@ -1242,7 +1241,7 @@ store_image_check(const png_store* ps, png_const_structp pp, int iImage)
|
|||||||
|
|
||||||
image += 2; /* skip image first row markers */
|
image += 2; /* skip image first row markers */
|
||||||
|
|
||||||
while (rows-- > 0)
|
for (; rows > 0; --rows)
|
||||||
{
|
{
|
||||||
if (image[-2] != 190 || image[-1] != 239)
|
if (image[-2] != 190 || image[-1] != 239)
|
||||||
png_error(pp, "row start overwritten");
|
png_error(pp, "row start overwritten");
|
||||||
@ -11427,7 +11426,16 @@ perform_interlace_macro_validation(void)
|
|||||||
*/
|
*/
|
||||||
for (v=0;;)
|
for (v=0;;)
|
||||||
{
|
{
|
||||||
|
/* The first two tests overflow if the pass row or column is outside
|
||||||
|
* the possible range for a 32-bit result. In fact the values should
|
||||||
|
* never be outside the range for a 31-bit result, but checking for 32
|
||||||
|
* bits here ensures that if an app uses a bogus pass row or column
|
||||||
|
* (just so long as it fits in a 32 bit integer) it won't get a
|
||||||
|
* possibly dangerous overflow.
|
||||||
|
*/
|
||||||
/* First the base 0 stuff: */
|
/* First the base 0 stuff: */
|
||||||
|
if (v < png_pass_rows(0xFFFFFFFFU, pass))
|
||||||
|
{
|
||||||
m = PNG_ROW_FROM_PASS_ROW(v, pass);
|
m = PNG_ROW_FROM_PASS_ROW(v, pass);
|
||||||
f = png_row_from_pass_row(v, pass);
|
f = png_row_from_pass_row(v, pass);
|
||||||
if (m != f)
|
if (m != f)
|
||||||
@ -11436,7 +11444,10 @@ perform_interlace_macro_validation(void)
|
|||||||
v, pass, m, f);
|
v, pass, m, f);
|
||||||
exit(99);
|
exit(99);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (v < png_pass_cols(0xFFFFFFFFU, pass))
|
||||||
|
{
|
||||||
m = PNG_COL_FROM_PASS_COL(v, pass);
|
m = PNG_COL_FROM_PASS_COL(v, pass);
|
||||||
f = png_col_from_pass_col(v, pass);
|
f = png_col_from_pass_col(v, pass);
|
||||||
if (m != f)
|
if (m != f)
|
||||||
@ -11445,6 +11456,7 @@ perform_interlace_macro_validation(void)
|
|||||||
v, pass, m, f);
|
v, pass, m, f);
|
||||||
exit(99);
|
exit(99);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m = PNG_ROW_IN_INTERLACE_PASS(v, pass);
|
m = PNG_ROW_IN_INTERLACE_PASS(v, pass);
|
||||||
f = png_row_in_interlace_pass(v, pass);
|
f = png_row_in_interlace_pass(v, pass);
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
This demonstrates the use of PNG_USER_CONFIG, pngusr.h and pngusr.dfa
|
This demonstrates the use of PNG_USER_CONFIG, pngusr.h and pngusr.dfa
|
||||||
to build minimal decoder, encoder, and progressive reader applications.
|
to build minimal decoder, encoder, and progressive reader applications.
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# pngminim/decoder/pngusr.dfa
|
# pngminim/decoder/pngusr.dfa
|
||||||
#
|
#
|
||||||
# Copyright (c) 2010-2011 Glenn Randers-Pehrson
|
# Copyright (c) 2010-2013 Glenn Randers-Pehrson
|
||||||
#
|
#
|
||||||
# This code is released under the libpng license.
|
# This code is released under the libpng license.
|
||||||
# For conditions of distribution and use, see the disclaimer
|
# For conditions of distribution and use, see the disclaimer
|
||||||
@ -37,3 +37,4 @@ option SETJMP on
|
|||||||
option STDIO on
|
option STDIO on
|
||||||
option READ_EXPAND on
|
option READ_EXPAND on
|
||||||
option READ_STRIP_16_TO_8 on
|
option READ_STRIP_16_TO_8 on
|
||||||
|
option USER_LIMITS on
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* minrdpngconf.h: headers to make a minimal png-read-only library
|
/* minrdpngconf.h: headers to make a minimal png-read-only library
|
||||||
*
|
*
|
||||||
* Copyright (c) 2007, 2010-2011 Glenn Randers-Pehrson
|
* Copyright (c) 2007, 2010-2013 Glenn Randers-Pehrson
|
||||||
*
|
*
|
||||||
* This code is released under the libpng license.
|
* This code is released under the libpng license.
|
||||||
* For conditions of distribution and use, see the disclaimer
|
* For conditions of distribution and use, see the disclaimer
|
||||||
@ -18,7 +18,6 @@
|
|||||||
* affect the API (so are not recorded in pnglibconf.h)
|
* affect the API (so are not recorded in pnglibconf.h)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define PNG_NO_WARNINGS
|
|
||||||
#define PNG_ALIGN_TYPE PNG_ALIGN_NONE
|
#define PNG_ALIGN_TYPE PNG_ALIGN_NONE
|
||||||
|
|
||||||
#endif /* MINRDPNGCONF_H */
|
#endif /* MINRDPNGCONF_H */
|
||||||
|
@ -13,7 +13,8 @@ everything = off
|
|||||||
# Switch on the write code - this makes a minimalist encoder
|
# Switch on the write code - this makes a minimalist encoder
|
||||||
|
|
||||||
option WRITE on
|
option WRITE on
|
||||||
# These 2 options are required if you need to read PGM (P1 or P4) PGM files.
|
|
||||||
|
# These 2 options are required if you need to read PBM (P1 or P4) files.
|
||||||
option WRITE_INVERT on
|
option WRITE_INVERT on
|
||||||
option WRITE_PACK on
|
option WRITE_PACK on
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* minwrpngconf.h: headers to make a minimal png-write-only library
|
/* minwrpngconf.h: headers to make a minimal png-write-only library
|
||||||
*
|
*
|
||||||
* Copyright (c) 2007, 2010-2011 Glenn Randers-Pehrson
|
* Copyright (c) 2007, 2010-2013 Glenn Randers-Pehrson
|
||||||
*
|
*
|
||||||
* This code is released under the libpng license.
|
* This code is released under the libpng license.
|
||||||
* For conditions of distribution and use, see the disclaimer
|
* For conditions of distribution and use, see the disclaimer
|
||||||
@ -18,7 +18,6 @@
|
|||||||
* affect the API (so are not recorded in pnglibconf.h)
|
* affect the API (so are not recorded in pnglibconf.h)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define PNG_NO_WARNINGS
|
|
||||||
#define PNG_ALIGN_TYPE PNG_ALIGN_NONE
|
#define PNG_ALIGN_TYPE PNG_ALIGN_NONE
|
||||||
|
|
||||||
#endif /* MINWRPNGCONF_H */
|
#endif /* MINWRPNGCONF_H */
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# pngminim/preader/pngusr.dfa
|
# pngminim/preader/pngusr.dfa
|
||||||
#
|
#
|
||||||
# Copyright (c) 2010-2011 Glenn Randers-Pehrson
|
# Copyright (c) 2010-2013 Glenn Randers-Pehrson
|
||||||
#
|
#
|
||||||
# This code is released under the libpng license.
|
# This code is released under the libpng license.
|
||||||
# For conditions of distribution and use, see the disclaimer
|
# For conditions of distribution and use, see the disclaimer
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* minrdpngconf.h: headers to make a minimal png-read-only library
|
/* minrdpngconf.h: headers to make a minimal png-read-only library
|
||||||
*
|
*
|
||||||
* Copyright (c) 2009, 2010-2011 Glenn Randers-Pehrson
|
* Copyright (c) 2009, 2010-2013 Glenn Randers-Pehrson
|
||||||
*
|
*
|
||||||
* This code is released under the libpng license.
|
* This code is released under the libpng license.
|
||||||
* For conditions of distribution and use, see the disclaimer
|
* For conditions of distribution and use, see the disclaimer
|
||||||
@ -18,7 +18,6 @@
|
|||||||
* affect the API (so are not recorded in pnglibconf.h)
|
* affect the API (so are not recorded in pnglibconf.h)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define PNG_NO_WARNINGS
|
|
||||||
#define PNG_ALIGN_TYPE PNG_ALIGN_NONE
|
#define PNG_ALIGN_TYPE PNG_ALIGN_NONE
|
||||||
|
|
||||||
#endif /* MINPRDPNGCONF_H */
|
#endif /* MINPRDPNGCONF_H */
|
||||||
|
29
pngtest.c
29
pngtest.c
@ -1,8 +1,8 @@
|
|||||||
|
|
||||||
/* pngtest.c - a simple test program to test libpng
|
/* pngtest.c - a simple test program to test libpng
|
||||||
*
|
*
|
||||||
* Last changed in libpng 1.5.25 [December 3, 2015]
|
* Last changed in libpng 1.6.26 [October 20, 2016]
|
||||||
* Copyright (c) 1998-2002,2004,2006-2015 Glenn Randers-Pehrson
|
* Copyright (c) 1998-2002,2004,2006-2016 Glenn Randers-Pehrson
|
||||||
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
|
||||||
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
|
||||||
*
|
*
|
||||||
@ -964,15 +964,16 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef PNG_BENIGN_ERRORS_SUPPORTED
|
||||||
if (strict != 0)
|
if (strict != 0)
|
||||||
{
|
{
|
||||||
/* Treat png_benign_error() as errors on read */
|
/* Treat png_benign_error() as errors on read */
|
||||||
png_set_benign_errors(read_ptr, 0);
|
png_set_benign_errors(read_ptr, 0);
|
||||||
|
|
||||||
#ifdef PNG_WRITE_SUPPORTED
|
# ifdef PNG_WRITE_SUPPORTED
|
||||||
/* Treat them as errors on write */
|
/* Treat them as errors on write */
|
||||||
png_set_benign_errors(write_ptr, 0);
|
png_set_benign_errors(write_ptr, 0);
|
||||||
#endif
|
# endif
|
||||||
|
|
||||||
/* if strict is not set, then app warnings and errors are treated as
|
/* if strict is not set, then app warnings and errors are treated as
|
||||||
* warnings in release builds, but not in unstable builds; this can be
|
* warnings in release builds, but not in unstable builds; this can be
|
||||||
@ -985,10 +986,15 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
/* Allow application (pngtest) errors and warnings to pass */
|
/* Allow application (pngtest) errors and warnings to pass */
|
||||||
png_set_benign_errors(read_ptr, 1);
|
png_set_benign_errors(read_ptr, 1);
|
||||||
|
|
||||||
#ifdef PNG_WRITE_SUPPORTED
|
/* Turn off CRC and ADLER32 checking while reading */
|
||||||
|
png_set_crc_action(read_ptr, PNG_CRC_QUIET_USE, PNG_CRC_QUIET_USE);
|
||||||
|
|
||||||
|
# ifdef PNG_WRITE_SUPPORTED
|
||||||
png_set_benign_errors(write_ptr, 1);
|
png_set_benign_errors(write_ptr, 1);
|
||||||
#endif
|
# endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif /* BENIGN_ERRORS */
|
||||||
|
|
||||||
pngtest_debug("Initializing input and output streams");
|
pngtest_debug("Initializing input and output streams");
|
||||||
#ifdef PNG_STDIO_SUPPORTED
|
#ifdef PNG_STDIO_SUPPORTED
|
||||||
@ -1386,6 +1392,11 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
png_write_info(write_ptr, write_info_ptr);
|
png_write_info(write_ptr, write_info_ptr);
|
||||||
|
|
||||||
write_chunks(write_ptr, before_IDAT); /* after PLTE */
|
write_chunks(write_ptr, before_IDAT); /* after PLTE */
|
||||||
|
|
||||||
|
#ifdef PNG_COMPRESSION_COMPAT
|
||||||
|
/* Test the 'compatibility' setting here, if it is available. */
|
||||||
|
png_set_compression(write_ptr, PNG_COMPRESSION_COMPAT);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SINGLE_ROWBUF_ALLOC
|
#ifdef SINGLE_ROWBUF_ALLOC
|
||||||
@ -1681,7 +1692,8 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
if (wrote_question == 0 && unsupported_chunks == 0)
|
if (wrote_question == 0 && unsupported_chunks == 0)
|
||||||
{
|
{
|
||||||
fprintf(STDERR,
|
fprintf(STDERR,
|
||||||
" Was %s written with the same maximum IDAT chunk size (%d bytes),",
|
" Was %s written with the same maximum IDAT"
|
||||||
|
" chunk size (%d bytes),",
|
||||||
inname, PNG_ZBUF_SIZE);
|
inname, PNG_ZBUF_SIZE);
|
||||||
fprintf(STDERR,
|
fprintf(STDERR,
|
||||||
"\n filtering heuristic (libpng default), compression");
|
"\n filtering heuristic (libpng default), compression");
|
||||||
@ -1712,7 +1724,8 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
|
|||||||
if (wrote_question == 0 && unsupported_chunks == 0)
|
if (wrote_question == 0 && unsupported_chunks == 0)
|
||||||
{
|
{
|
||||||
fprintf(STDERR,
|
fprintf(STDERR,
|
||||||
" Was %s written with the same maximum IDAT chunk size (%d bytes),",
|
" Was %s written with the same maximum"
|
||||||
|
" IDAT chunk size (%d bytes),",
|
||||||
inname, PNG_ZBUF_SIZE);
|
inname, PNG_ZBUF_SIZE);
|
||||||
fprintf(STDERR,
|
fprintf(STDERR,
|
||||||
"\n filtering heuristic (libpng default), compression");
|
"\n filtering heuristic (libpng default), compression");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user