diff options
author | Cosmin Truta <ctruta@gmail.com> | 2018-06-17 22:56:29 -0400 |
---|---|---|
committer | Cosmin Truta <ctruta@gmail.com> | 2018-06-17 22:56:29 -0400 |
commit | 8a05766cb74af05c04c53e6c9d60c13fc4d59bf2 (patch) | |
tree | 342ea1a338cbbe127ee12debcab8e5ba3989fde8 /pngrutil.c | |
parent | a74aa9a0028a8e746ec5646a3d3ee1c659f0af8a (diff) | |
download | libpng-8a05766cb74af05c04c53e6c9d60c13fc4d59bf2.tar.gz |
[libpng16] Fix the calculation of row_factor in png_check_chunk_length
(Bug report by Thuan Pham, SourceForge issue #278)
Diffstat (limited to 'pngrutil.c')
-rw-r--r-- | pngrutil.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/pngrutil.c b/pngrutil.c index 95571b517..5ba995abf 100644 --- a/pngrutil.c +++ b/pngrutil.c @@ -3167,10 +3167,13 @@ png_check_chunk_length(png_const_structrp png_ptr, const png_uint_32 length) { png_alloc_size_t idat_limit = PNG_UINT_31_MAX; size_t row_factor = - (png_ptr->width * png_ptr->channels * (png_ptr->bit_depth > 8? 2: 1) - + 1 + (png_ptr->interlaced? 6: 0)); + (size_t)png_ptr->width + * (size_t)png_ptr->channels + * (png_ptr->bit_depth > 8? 2: 1) + + 1 + + (png_ptr->interlaced? 6: 0); if (png_ptr->height > PNG_UINT_32_MAX/row_factor) - idat_limit=PNG_UINT_31_MAX; + idat_limit = PNG_UINT_31_MAX; else idat_limit = png_ptr->height * row_factor; row_factor = row_factor > 32566? 32566 : row_factor; |