blob: 84b1af1fbfab22dce8a780abe32dcf78885f6509 [file] [log] [blame]
Brad Bishopbba38f32018-08-23 16:11:46 +08001From 8a05766cb74af05c04c53e6c9d60c13fc4d59bf2 Mon Sep 17 00:00:00 2001
2From: Cosmin Truta <ctruta@gmail.com>
3Date: Sun, 17 Jun 2018 22:56:29 -0400
4Subject: [PATCH] [libpng16] Fix the calculation of row_factor in
5 png_check_chunk_length
6
7(Bug report by Thuan Pham, SourceForge issue #278)
8Upstream-Status: Backport [https://github.com/glennrp/libpng/commit/8a05766cb74af05c04c53e6c9d60c13fc4d59bf2]
9Signed-off-by: Sinan Kaya <okaya@kernel.org>
10---
11 pngrutil.c | 9 ++++++---
12 1 file changed, 6 insertions(+), 3 deletions(-)
13
14diff --git a/pngrutil.c b/pngrutil.c
15index 95571b517..5ba995abf 100644
16--- a/pngrutil.c
17+++ b/pngrutil.c
18@@ -3167,10 +3167,13 @@ png_check_chunk_length(png_const_structrp png_ptr, const png_uint_32 length)
19 {
20 png_alloc_size_t idat_limit = PNG_UINT_31_MAX;
21 size_t row_factor =
22- (png_ptr->width * png_ptr->channels * (png_ptr->bit_depth > 8? 2: 1)
23- + 1 + (png_ptr->interlaced? 6: 0));
24+ (size_t)png_ptr->width
25+ * (size_t)png_ptr->channels
26+ * (png_ptr->bit_depth > 8? 2: 1)
27+ + 1
28+ + (png_ptr->interlaced? 6: 0);
29 if (png_ptr->height > PNG_UINT_32_MAX/row_factor)
30- idat_limit=PNG_UINT_31_MAX;
31+ idat_limit = PNG_UINT_31_MAX;
32 else
33 idat_limit = png_ptr->height * row_factor;
34 row_factor = row_factor > 32566? 32566 : row_factor;
35--
362.19.0
37