| Index: third_party/libpng16/0003-check-errors-in-set-pcal.patch
|
| diff --git a/third_party/libpng16/0003-check-errors-in-set-pcal.patch b/third_party/libpng16/0003-check-errors-in-set-pcal.patch
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..58e27ba62371576d916c603e0615e5e22eb44205
|
| --- /dev/null
|
| +++ b/third_party/libpng16/0003-check-errors-in-set-pcal.patch
|
| @@ -0,0 +1,47 @@
|
| +diff --git a/pngset.c b/pngset.c
|
| +index cccd9cd..83d6ce2 100644
|
| +--- a/pngset.c
|
| ++++ b/pngset.c
|
| +@@ -283,17 +283,29 @@ png_set_pCAL(png_const_structrp png_ptr, png_inforpinfo_ptr,
|
| +
|
| + /* Check that the type matches the specification. */
|
| + if (type < 0 || type > 3)
|
| +- png_error(png_ptr, "Invalid pCAL equation type");
|
| ++ {
|
| ++ png_chunk_report(png_ptr, "Invalid pCAL equation type",
|
| ++ PNG_CHUNK_WRITE_ERROR);
|
| ++ return;
|
| ++ }
|
| +
|
| + if (nparams < 0 || nparams > 255)
|
| +- png_error(png_ptr, "Invalid pCAL parameter count");
|
| ++ {
|
| ++ png_chunk_report(png_ptr, "Invalid pCAL parameter count",
|
| ++ PNG_CHUNK_WRITE_ERROR);
|
| ++ return;
|
| ++ }
|
| +
|
| + /* Validate params[nparams] */
|
| + for (i=0; i<nparams; ++i)
|
| + {
|
| + if (params[i] == NULL ||
|
| + !png_check_fp_string(params[i], strlen(params[i])))
|
| +- png_error(png_ptr, "Invalid format for pCAL parameter");
|
| ++ {
|
| ++ png_chunk_report(png_ptr, "Invalid format for pCAL parameter",
|
| ++ PNG_CHUNK_WRITE_ERROR);
|
| ++ return;
|
| ++ }
|
| + }
|
| +
|
| + info_ptr->pcal_purpose = png_voidcast(png_charp,
|
| +@@ -301,8 +313,8 @@ png_set_pCAL(png_const_structrp png_ptr, png_inforpinfo_ptr,
|
| +
|
| + if (info_ptr->pcal_purpose == NULL)
|
| + {
|
| +- png_warning(png_ptr, "Insufficient memory for pCAL purpose");
|
| +-
|
| ++ png_chunk_report(png_ptr, "Insufficient memory for pCAL purpose",
|
| ++ PNG_CHUNK_WRITE_ERROR);
|
| + return;
|
| + }
|
|
|