File ImageMagick-CVE-2020-27750.patch of Package ImageMagick.30956

Index: ImageMagick-6.8.8-1/magick/colorspace-private.h
===================================================================
--- ImageMagick-6.8.8-1.orig/magick/colorspace-private.h	2013-11-27 20:02:59.000000000 +0100
+++ ImageMagick-6.8.8-1/magick/colorspace-private.h	2020-12-03 13:52:43.125876616 +0100
@@ -22,6 +22,7 @@
 #include "magick/image-private.h"
 #include "magick/pixel.h"
 #include "magick/pixel-accessor.h"
+#include "magick/pixel-private.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
@@ -64,9 +65,9 @@ static inline void ConvertRGBToCMYK(Magi
     black=magenta;
   if (yellow < black)
     black=yellow;
-  cyan=(MagickRealType) ((cyan-black)/(1.0-black));
-  magenta=(MagickRealType) ((magenta-black)/(1.0-black));
-  yellow=(MagickRealType) ((yellow-black)/(1.0-black));
+  cyan=(MagickRealType) (PerceptibleReciprocal(1.0-black)*(cyan-black));
+  magenta=(MagickRealType) (PerceptibleReciprocal(1.0-black)*(magenta-black));
+  yellow=(MagickRealType) (PerceptibleReciprocal(1.0-black)*(yellow-black));
   pixel->colorspace=CMYKColorspace;
   pixel->red=QuantumRange*cyan;
   pixel->green=QuantumRange*magenta;
Index: ImageMagick-6.8.8-1/tests/validate.c
===================================================================
--- ImageMagick-6.8.8-1.orig/tests/validate.c	2013-12-01 15:47:50.000000000 +0100
+++ ImageMagick-6.8.8-1/tests/validate.c	2020-12-03 13:50:15.617000540 +0100
@@ -296,20 +296,6 @@ static void ConvertRGBToLMS(const double
   ConvertXYZToLMS(X,Y,Z,L,M,S);
 }
 
-static inline double PerceptibleReciprocal(const double x)
-{
-  double
-    sign;
-
-  /*
-    Return 1/x where x is perceptible (not unlimited or infinitesimal).
-  */
-  sign=x < 0.0 ? -1.0 : 1.0;
-  if ((sign*x) >= MagickEpsilon)
-    return(1.0/x);
-  return(sign/MagickEpsilon);
-}
-
 static inline void ConvertXYZToLuv(const double X,const double Y,const double Z,
   double *L,double *u,double *v)
 {
openSUSE Build Service is sponsored by