]> granicus.if.org Git - imagemagick/commitdiff
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5850
authorCristy <urban-warrior@imagemagick.org>
Wed, 31 Jan 2018 23:44:33 +0000 (18:44 -0500)
committerCristy <urban-warrior@imagemagick.org>
Wed, 31 Jan 2018 23:44:33 +0000 (18:44 -0500)
MagickCore/composite.c

index 5d75eb5fbfc0a2270c66c3490821d6ae058b384c..eaa0690ae670e3bbfbdf7fcb39f98d7137472111 100644 (file)
@@ -1772,8 +1772,8 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
             if ((Sca*Da+Dca*Sa) >= Sa*Da)
               pixel=QuantumRange*gamma*(Sa*Da+Sca*(1.0-Da)+Dca*(1.0-Sa));
             else
-              pixel=QuantumRange*gamma*(Dca*Sa*Sa/(Sa-Sca)+Sca*(1.0-Da)+Dca*
-                (1.0-Sa));
+              pixel=QuantumRange*gamma*(Dca*Sa*Sa*PerceptibleReciprocal(Sa-Sca)+
+                Sca*(1.0-Da)+Dca*(1.0-Sa));
             break;
           }
           case ColorizeCompositeOp:
@@ -2310,12 +2310,12 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
               }
             if ((2.0*Sca) <= Sa)
               {
-                pixel=QuantumRange*gamma*(Sa*(Da+Sa*(Dca-Da)/(2.0*Sca))+Sca*
-                  (1.0-Da)+Dca*(1.0-Sa));
+                pixel=QuantumRange*gamma*(Sa*(Da+Sa*(Dca-Da)*
+                  PerceptibleReciprocal(2.0*Sca))+Sca*(1.0-Da)+Dca*(1.0-Sa));
                 break;
               }
-            pixel=QuantumRange*gamma*(Dca*Sa*Sa/(2.0*(Sa-Sca))+Sca*(1.0-Da)+Dca*
-              (1.0-Sa));
+            pixel=QuantumRange*gamma*(Dca*Sa*Sa*PerceptibleReciprocal(2.0*
+              (Sa-Sca))+Sca*(1.0-Da)+Dca*(1.0-Sa));
             break;
           }
           case XorCompositeOp: