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 */
openSUSE Build Service is sponsored by