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)
{