[devel] Check for up->location !PNG_AFTER_IDAT when writing unknown chunks
before IDAT.
This commit is contained in:
parent
2d3fc1ca3b
commit
36fa2a0abd
2
ANNOUNCE
2
ANNOUNCE
@ -109,6 +109,8 @@ Version 1.5.3beta07 [May 11, 2011]
|
|||||||
Moved macro definitions for PNG_HAVE_IHDR, PNG_HAVE_PLTE, and PNG_AFTER_IDAT
|
Moved macro definitions for PNG_HAVE_IHDR, PNG_HAVE_PLTE, and PNG_AFTER_IDAT
|
||||||
from pngpriv.h to png.h because they must be visible to applications
|
from pngpriv.h to png.h because they must be visible to applications
|
||||||
that call png_set_unknown_chunks().
|
that call png_set_unknown_chunks().
|
||||||
|
Check for up->location !PNG_AFTER_IDAT when writing unknown chunks
|
||||||
|
before IDAT.
|
||||||
|
|
||||||
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
|
||||||
|
2
CHANGES
2
CHANGES
@ -3368,6 +3368,8 @@ Version 1.5.3beta07 [May 11, 2011]
|
|||||||
Moved macro definitions for PNG_HAVE_IHDR, PNG_HAVE_PLTE, and PNG_AFTER_IDAT
|
Moved macro definitions for PNG_HAVE_IHDR, PNG_HAVE_PLTE, and PNG_AFTER_IDAT
|
||||||
from pngpriv.h to png.h because they must be visible to applications
|
from pngpriv.h to png.h because they must be visible to applications
|
||||||
that call png_set_unknown_chunks().
|
that call png_set_unknown_chunks().
|
||||||
|
Check for up->location !PNG_AFTER_IDAT when writing unknown chunks
|
||||||
|
before IDAT.
|
||||||
|
|
||||||
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
|
||||||
|
11
pngwrite.c
11
pngwrite.c
@ -99,8 +99,10 @@ png_write_info_before_PLTE(png_structp png_ptr, png_infop info_ptr)
|
|||||||
int keep = png_handle_as_unknown(png_ptr, up->name);
|
int keep = png_handle_as_unknown(png_ptr, up->name);
|
||||||
|
|
||||||
if (keep != PNG_HANDLE_CHUNK_NEVER &&
|
if (keep != PNG_HANDLE_CHUNK_NEVER &&
|
||||||
up->location && !(up->location & PNG_HAVE_PLTE) &&
|
up->location &&
|
||||||
|
!(up->location & PNG_HAVE_PLTE) &&
|
||||||
!(up->location & PNG_HAVE_IDAT) &&
|
!(up->location & PNG_HAVE_IDAT) &&
|
||||||
|
!(up->location & PNG_AFTER_IDAT) &&
|
||||||
((up->name[3] & 0x20) || keep == PNG_HANDLE_CHUNK_ALWAYS ||
|
((up->name[3] & 0x20) || keep == PNG_HANDLE_CHUNK_ALWAYS ||
|
||||||
(png_ptr->flags & PNG_FLAG_KEEP_UNSAFE_CHUNKS)))
|
(png_ptr->flags & PNG_FLAG_KEEP_UNSAFE_CHUNKS)))
|
||||||
{
|
{
|
||||||
@ -273,8 +275,10 @@ png_write_info(png_structp png_ptr, png_infop info_ptr)
|
|||||||
{
|
{
|
||||||
int keep = png_handle_as_unknown(png_ptr, up->name);
|
int keep = png_handle_as_unknown(png_ptr, up->name);
|
||||||
if (keep != PNG_HANDLE_CHUNK_NEVER &&
|
if (keep != PNG_HANDLE_CHUNK_NEVER &&
|
||||||
up->location && (up->location & PNG_HAVE_PLTE) &&
|
up->location &&
|
||||||
|
(up->location & PNG_HAVE_PLTE) &&
|
||||||
!(up->location & PNG_HAVE_IDAT) &&
|
!(up->location & PNG_HAVE_IDAT) &&
|
||||||
|
!(up->location & PNG_AFTER_IDAT) &&
|
||||||
((up->name[3] & 0x20) || keep == PNG_HANDLE_CHUNK_ALWAYS ||
|
((up->name[3] & 0x20) || keep == PNG_HANDLE_CHUNK_ALWAYS ||
|
||||||
(png_ptr->flags & PNG_FLAG_KEEP_UNSAFE_CHUNKS)))
|
(png_ptr->flags & PNG_FLAG_KEEP_UNSAFE_CHUNKS)))
|
||||||
{
|
{
|
||||||
@ -380,7 +384,8 @@ png_write_end(png_structp png_ptr, png_infop info_ptr)
|
|||||||
{
|
{
|
||||||
int keep = png_handle_as_unknown(png_ptr, up->name);
|
int keep = png_handle_as_unknown(png_ptr, up->name);
|
||||||
if (keep != PNG_HANDLE_CHUNK_NEVER &&
|
if (keep != PNG_HANDLE_CHUNK_NEVER &&
|
||||||
up->location && (up->location & PNG_AFTER_IDAT) &&
|
up->location &&
|
||||||
|
(up->location & PNG_AFTER_IDAT) &&
|
||||||
((up->name[3] & 0x20) || keep == PNG_HANDLE_CHUNK_ALWAYS ||
|
((up->name[3] & 0x20) || keep == PNG_HANDLE_CHUNK_ALWAYS ||
|
||||||
(png_ptr->flags & PNG_FLAG_KEEP_UNSAFE_CHUNKS)))
|
(png_ptr->flags & PNG_FLAG_KEEP_UNSAFE_CHUNKS)))
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user