File ImageMagick-CVE-2014-9849.patch of Package ImageMagick.openSUSE_13.2_Update
Index: ImageMagick-6.8.9-8/coders/png.c
===================================================================
--- ImageMagick-6.8.9-8.orig/coders/png.c 2014-09-09 01:24:39.000000000 +0200
+++ ImageMagick-6.8.9-8/coders/png.c 2016-06-13 13:22:53.852002928 +0200
@@ -3234,6 +3234,16 @@ static Image *ReadOnePNGImage(MngInfo *m
if (image->storage_class == DirectClass)
{
+ QuantumInfo
+ *quantum_info;
+
+ quantum_info=AcquireQuantumInfo(image_info,image);
+
+ if (quantum_info == (QuantumInfo *) NULL)
+ png_error(ping,"Failed to allocate quantum_info");
+
+ (void) SetQuantumEndian(image,quantum_info,MSBEndian);
+
for (pass=0; pass < num_passes; pass++)
{
/*
@@ -3265,16 +3275,6 @@ static Image *ReadOnePNGImage(MngInfo *m
else
{
- QuantumInfo
- *quantum_info;
-
- quantum_info=AcquireQuantumInfo(image_info,image);
-
- if (quantum_info == (QuantumInfo *) NULL)
- png_error(ping,"Failed to allocate quantum_info");
-
- (void) SetQuantumEndian(image,quantum_info,MSBEndian);
-
if ((int) ping_color_type == PNG_COLOR_TYPE_GRAY)
(void) ImportQuantumPixels(image,(CacheView *) NULL,quantum_info,
GrayQuantum,ping_pixels+row_offset,exception);
@@ -3295,7 +3295,6 @@ static Image *ReadOnePNGImage(MngInfo *m
(void) ImportQuantumPixels(image,(CacheView *) NULL,quantum_info,
RGBQuantum,ping_pixels+row_offset,exception);
- quantum_info=DestroyQuantumInfo(quantum_info);
}
if (found_transparent_pixel == MagickFalse)
@@ -3356,6 +3355,7 @@ static Image *ReadOnePNGImage(MngInfo *m
break;
}
}
+ quantum_info=DestroyQuantumInfo(quantum_info);
}
else /* image->storage_class != DirectClass */