| # HG changeset patch |
| # User Bob Friesenhahn <bfriesen@GraphicsMagick.org> |
| # Date 1590851896 18000 |
| # Sat May 30 10:18:16 2020 -0500 |
| # Node ID 50395430a37188d0d197e71bd85ed6dd0f649ee3 |
| # Parent 4917a4242fc0a12f2f6baa10f1c5a9b3e68c20dd |
| MNG: Fix small heap overwrite or assertion if magnifying and image to be magnified has rows or columns == 1. |
| |
| [Retrieved (and updated to remove ChangeLog and version changes) from: |
| https://sourceforge.net/p/graphicsmagick/code/ci/50395430a37188d0d197e71bd85ed6dd0f649ee3] |
| Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> |
| |
| diff -r 4917a4242fc0 -r 50395430a371 coders/png.c |
| --- a/coders/png.c Fri May 01 13:49:13 2020 -0500 |
| +++ b/coders/png.c Sat May 30 10:18:16 2020 -0500 |
| @@ -5304,7 +5304,7 @@ |
| if (logging) |
| (void) LogMagickEvent(CoderEvent,GetMagickModule(), |
| "MAGN chunk (%lu bytes): " |
| - "First_magnified_object_id=%u, Last_magnified_object_id=%u, " |
| + "First_magnified_object_id=%u, Las t_magnified_object_id=%u, " |
| "MB=%u, ML=%u, MR=%u, MT=%u, MX=%u, MY=%u, " |
| "X_method=%u, Y_method=%u", |
| length, |
| @@ -5679,6 +5679,8 @@ |
| /* |
| If magnifying and a supported method is requested then |
| magnify the image. |
| + |
| + http://www.libpng.org/pub/mng/spec/mng-1.0-20010209-pdg.html#mng-MAGN |
| */ |
| if (((mng_info->magn_methx > 0) && (mng_info->magn_methx <= 5)) && |
| ((mng_info->magn_methy > 0) && (mng_info->magn_methy <= 5))) |
| @@ -5689,7 +5691,28 @@ |
| |
| if (logging) |
| (void) LogMagickEvent(CoderEvent,GetMagickModule(), |
| - " Processing MNG MAGN chunk"); |
| + " Processing MNG MAGN chunk: MB=%u, ML=%u," |
| + " MR=%u, MT=%u, MX=%u, MY=%u," |
| + " X_method=%u, Y_method=%u", |
| + mng_info->magn_mb,mng_info->magn_ml, |
| + mng_info->magn_mr,mng_info->magn_mt, |
| + mng_info->magn_mx,mng_info->magn_my, |
| + mng_info->magn_methx, |
| + mng_info->magn_methy); |
| + |
| + /* |
| + If the image width is 1, then X magnification is done |
| + by simple pixel replication. |
| + */ |
| + if (image->columns == 1) |
| + mng_info->magn_methx = 1; |
| + |
| + /* |
| + If the image height is 1, then Y magnification is done |
| + by simple pixel replication. |
| + */ |
| + if (image->rows == 1) |
| + mng_info->magn_methy = 1; |
| |
| if (mng_info->magn_methx == 1) |
| { |
| @@ -5734,12 +5757,10 @@ |
| Image |
| *large_image; |
| |
| - int |
| - yy; |
| - |
| long |
| m, |
| - y; |
| + y, |
| + yy; |
| |
| register long |
| x; |