summaryrefslogtreecommitdiff
path: root/media-gfx/graphicsmagick/files/graphicsmagick-1.3.35-CVE-2020-12672.patch
blob: b314ea288e437f86ef05232ffb01d3277dead067 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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;