[libpng16] Avoid dereferencing NULL pointer possibly returned from

png_create_write_struct() (Andrew Church).
This commit is contained in:
Glenn Randers-Pehrson 2013-04-29 08:57:14 -05:00
parent 61946e0f56
commit 56d6bc2e88
3 changed files with 39 additions and 36 deletions

View File

@ -1,5 +1,5 @@
Libpng 1.6.3beta03 - April 27, 2013 Libpng 1.6.3beta03 - April 29, 2013
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.
@ -35,9 +35,11 @@ Version 1.6.3beta02 [April 26, 2013]
Test for 'arm*' not just 'arm' in the host_cpu configure variable. Test for 'arm*' not just 'arm' in the host_cpu configure variable.
Rebuilt the configure scripts. Rebuilt the configure scripts.
Version 1.6.3beta03 [April 27, 2013] Version 1.6.3beta03 [April 29, 2013]
Expanded manual paragraph about writing private chunks, particularly Expanded manual paragraph about writing private chunks, particularly
the need to call png_set_keep_unknown_chunks() when writing them. the need to call png_set_keep_unknown_chunks() when writing them.
Avoid dereferencing NULL pointer possibly returned from
png_create_write_struct() (Andrew Church).
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

View File

@ -4517,9 +4517,11 @@ Version 1.6.3beta02 [April 26, 2013]
Test for 'arm*' not just 'arm' in the host_cpu configure variable. Test for 'arm*' not just 'arm' in the host_cpu configure variable.
Rebuilt the configure scripts. Rebuilt the configure scripts.
Version 1.6.3beta03 [April 27, 2013] Version 1.6.3beta03 [April 29, 2013]
Expanded manual paragraph about writing private chunks, particularly Expanded manual paragraph about writing private chunks, particularly
the need to call png_set_keep_unknown_chunks() when writing them. the need to call png_set_keep_unknown_chunks() when writing them.
Avoid dereferencing NULL pointer possibly returned from
png_create_write_struct() (Andrew Church).
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

View File

@ -494,51 +494,50 @@ png_create_write_struct_2,(png_const_charp user_png_ver, png_voidp error_ptr,
png_structrp png_ptr = png_create_png_struct(user_png_ver, error_ptr, png_structrp png_ptr = png_create_png_struct(user_png_ver, error_ptr,
error_fn, warn_fn, mem_ptr, malloc_fn, free_fn); error_fn, warn_fn, mem_ptr, malloc_fn, free_fn);
#endif /* PNG_USER_MEM_SUPPORTED */ #endif /* PNG_USER_MEM_SUPPORTED */
if (png_ptr != NULL)
{
/* Set the zlib control values to defaults; they can be overridden by the
* application after the struct has been created.
*/
png_ptr->zbuffer_size = PNG_ZBUF_SIZE;
/* Set the zlib control values to defaults; they can be overridden by the /* The 'zlib_strategy' setting is irrelevant because png_default_claim in
* application after the struct has been created. * pngwutil.c defaults it according to whether or not filters will be
*/ * used, and ignores this setting.
png_ptr->zbuffer_size = PNG_ZBUF_SIZE; */
png_ptr->zlib_strategy = PNG_Z_DEFAULT_STRATEGY;
/* The 'zlib_strategy' setting is irrelevant because png_default_claim in png_ptr->zlib_level = PNG_Z_DEFAULT_COMPRESSION;
* pngwutil.c defaults it according to whether or not filters will be used, png_ptr->zlib_mem_level = 8;
* and ignores this setting. png_ptr->zlib_window_bits = 15;
*/ png_ptr->zlib_method = 8;
png_ptr->zlib_strategy = PNG_Z_DEFAULT_STRATEGY;
png_ptr->zlib_level = PNG_Z_DEFAULT_COMPRESSION;
png_ptr->zlib_mem_level = 8;
png_ptr->zlib_window_bits = 15;
png_ptr->zlib_method = 8;
#ifdef PNG_WRITE_COMPRESSED_TEXT_SUPPORTED #ifdef PNG_WRITE_COMPRESSED_TEXT_SUPPORTED
png_ptr->zlib_text_strategy = PNG_TEXT_Z_DEFAULT_STRATEGY; png_ptr->zlib_text_strategy = PNG_TEXT_Z_DEFAULT_STRATEGY;
png_ptr->zlib_text_level = PNG_TEXT_Z_DEFAULT_COMPRESSION; png_ptr->zlib_text_level = PNG_TEXT_Z_DEFAULT_COMPRESSION;
png_ptr->zlib_text_mem_level = 8; png_ptr->zlib_text_mem_level = 8;
png_ptr->zlib_text_window_bits = 15; png_ptr->zlib_text_window_bits = 15;
png_ptr->zlib_text_method = 8; png_ptr->zlib_text_method = 8;
#endif /* PNG_WRITE_COMPRESSED_TEXT_SUPPORTED */ #endif /* PNG_WRITE_COMPRESSED_TEXT_SUPPORTED */
/* This is a highly dubious configuration option; by default it is off, but /* This is a highly dubious configuration option; by default it is off,
* it may be appropriate for private builds that are testing extensions not * but it may be appropriate for private builds that are testing
* conformant to the current specification, or of applications that must not * extensions not conformant to the current specification, or of
* fail to write at all costs! * applications that must not fail to write at all costs!
*/ */
# ifdef PNG_BENIGN_WRITE_ERRORS_SUPPORTED #ifdef PNG_BENIGN_WRITE_ERRORS_SUPPORTED
png_ptr->flags |= PNG_FLAG_BENIGN_ERRORS_WARN; png_ptr->flags |= PNG_FLAG_BENIGN_ERRORS_WARN;
/* In stable builds only warn if an application error can be completely /* In stable builds only warn if an application error can be completely
* handled. * handled.
*/ */
# endif #endif
/* App warnings are warnings in release (or release candidate) builds but /* App warnings are warnings in release (or release candidate) builds but
* are errors during development. * are errors during development.
*/ */
# if PNG_LIBPNG_BUILD_BASE_TYPE >= PNG_LIBPNG_BUILD_RC #if PNG_LIBPNG_BUILD_BASE_TYPE >= PNG_LIBPNG_BUILD_RC
png_ptr->flags |= PNG_FLAG_APP_WARNINGS_WARN; png_ptr->flags |= PNG_FLAG_APP_WARNINGS_WARN;
# endif #endif
if (png_ptr != NULL)
{
/* TODO: delay this, it can be done in png_init_io() (if the app doesn't /* TODO: delay this, it can be done in png_init_io() (if the app doesn't
* do it itself) avoiding setting the default function if it is not * do it itself) avoiding setting the default function if it is not
* required. * required.