Sophie

Sophie

distrib > Mageia > 6 > x86_64 > by-pkgid > 6b6be615f8743ce6e3523cc425763687 > files > 3

graphicsmagick-1.3.31-1.5.mga6.src.rpm

diff -r 648e3977a293 -r 15d1b5fd003b coders/tga.c
--- a/coders/tga.c	Tue Dec 11 20:53:57 2018 -0600
+++ b/coders/tga.c	Wed Dec 12 19:34:25 2018 -0600
@@ -51,9 +51,76 @@
 */
 static unsigned int
   WriteTGAImage(const ImageInfo *,Image *);
+
+
+#define TGAColormap 1          /* Colormapped image data */
+#define TGARGB 2               /* Truecolor image data */
+#define TGAMonochrome 3        /* Monochrome image data */
+#define TGARLEColormap  9      /* Colormapped image data (encoded) */
+#define TGARLERGB  10          /* Truecolor image data (encoded) */
+#define TGARLEMonochrome  11   /* Monochrome image data (encoded) */
+
+typedef struct _TGAInfo
+{
+  unsigned char
+    id_length,       /* Size of Image ID field */
+    colormap_type,   /* Color map type */
+    image_type;      /* Image type code */
+
+  unsigned short
+    colormap_index,  /* Color map origin */
+    colormap_length; /* Color map length */
+
+  unsigned char
+    colormap_size;   /* Color map entry depth */
+
+  unsigned short
+    x_origin,        /* X origin of image */
+    y_origin,        /* Y orgin of image */
+    width,           /* Width of image */
+    height;          /* Height of image */
+
+  unsigned char
+    bits_per_pixel,  /* Image pixel size */
+    attributes;      /* Image descriptor byte */
+} TGAInfo;
+
 
 
-magick_uint16_t ReadBlobLSBShortFromBuffer(unsigned char* buffer, size_t* readerpos)
+static void LogTGAInfo(const TGAInfo *tga_info)
+{
+  (void) LogMagickEvent(CoderEvent,GetMagickModule(),
+                        "Targa Header:\n"
+                        "    ImageType  : %s\n"
+                        "    CMapType   : %u\n"
+                        "    CMapStart  : %u\n"
+                        "    CMapLength : %u\n"
+                        "    CMapDepth  : %u\n"
+                        "    XOffset    : %u\n"
+                        "    YOffset    : %u\n"
+                        "    Width      : %u\n"
+                        "    Height     : %u\n"
+                        "    PixelDepth : %u\n"
+                        "    Attributes : 0x%.2x",
+                        ((tga_info->image_type == TGAColormap) ? "Colormapped" :
+                         (tga_info->image_type == TGARGB) ? "TrueColor" :
+                         (tga_info->image_type == TGAMonochrome) ? "Monochrome" :
+                         (tga_info->image_type == TGARLEColormap) ? "Colormapped-RLE" :
+                         (tga_info->image_type == TGARLERGB) ? "Truecolor-RLE" :
+                         (tga_info->image_type == TGARLEMonochrome) ? "Monochrome-RLE" :
+                         "Unknown"),
+                        (unsigned int) tga_info->colormap_type,   /* Colormap type */
+                        (unsigned int) tga_info->colormap_index,  /* Index of first colormap entry to use */
+                        (unsigned int) tga_info->colormap_length, /* # of elements in colormap */
+                        (unsigned int) tga_info->colormap_size,   /* Bits in each palette entry */
+                        tga_info->x_origin, tga_info->y_origin,
+                        tga_info->width, tga_info->height,
+                        (unsigned int) tga_info->bits_per_pixel,
+                        tga_info->attributes);
+
+}
+
+static magick_uint16_t ReadBlobLSBShortFromBuffer(unsigned char* buffer, size_t* readerpos)
 {
   magick_uint16_t
     value;
@@ -65,7 +132,7 @@
 }
 
 
-int ReadBlobByteFromBuffer(unsigned char* buffer, size_t* readerpos)
+static int ReadBlobByteFromBuffer(unsigned char* buffer, size_t* readerpos)
 {
   int
     value;
@@ -108,38 +175,6 @@
 */
 static Image *ReadTGAImage(const ImageInfo *image_info,ExceptionInfo *exception)
 {
-#define TGAColormap 1          /* Colormapped image data */
-#define TGARGB 2               /* Truecolor image data */
-#define TGAMonochrome 3        /* Monochrome image data */
-#define TGARLEColormap  9      /* Colormapped image data (encoded) */
-#define TGARLERGB  10          /* Truecolor image data (encoded) */
-#define TGARLEMonochrome  11   /* Monochrome image data (encoded) */
-
-  typedef struct _TGAInfo
-  {
-    unsigned char
-      id_length,       /* Size of Image ID field */
-      colormap_type,   /* Color map type */
-      image_type;      /* Image type code */
-
-    unsigned short
-      colormap_index,  /* Color map origin */
-      colormap_length; /* Color map length */
-
-    unsigned char
-      colormap_size;   /* Color map entry depth */
-
-    unsigned short
-      x_origin,        /* X origin of image */
-      y_origin,        /* Y orgin of image */
-      width,           /* Width of image */
-      height;          /* Height of image */
-
-    unsigned char
-      bits_per_pixel,  /* Image pixel size */
-      attributes;      /* Image descriptor byte */
-  } TGAInfo;
-
   Image
     *image;
 
@@ -238,24 +273,9 @@
       assert(readbufferpos == headersize);
       if (EOFBlob(image))
         ThrowReaderException(CorruptImageError,UnexpectedEndOfFile,image);
-      (void) LogMagickEvent(CoderEvent,GetMagickModule(),
-                            "ImageType=%s CMapType=%u CMapStart=%u CMapLength=%u CMapDepth=%u\n"
-                            "  XOffset=%u YOffset=%u Width=%u Height=%u PixelDepth=%u Attributes=0x%.2x",
-                            ((tga_info.image_type == TGAColormap) ? "Colormapped" :
-                             (tga_info.image_type == TGARGB) ? "TrueColor" :
-                             (tga_info.image_type == TGAMonochrome) ? "Monochrome" :
-                             (tga_info.image_type == TGARLEColormap) ? "Colormapped-RLE" :
-                             (tga_info.image_type == TGARLERGB) ? "Truecolor-RLE" :
-                             (tga_info.image_type == TGARLEMonochrome) ? "Monochrome-RLE" :
-                             "Unknown"),
-                            (unsigned int) tga_info.colormap_type,   /* Colormap type */
-                            (unsigned int) tga_info.colormap_index,  /* Index of first colormap entry to use */
-                            (unsigned int) tga_info.colormap_length, /* # of elements in colormap */
-                            (unsigned int) tga_info.colormap_size,   /* Bits in each palette entry */
-                            tga_info.x_origin, tga_info.y_origin,
-                            tga_info.width, tga_info.height,
-                            (unsigned int) tga_info.bits_per_pixel,
-                            tga_info.attributes);
+
+      if (image->logging)
+        LogTGAInfo(&tga_info);
 
       /*
         Validate depth.
@@ -766,38 +786,6 @@
 */
 static unsigned int WriteTGAImage(const ImageInfo *image_info,Image *image)
 {
-#define TargaColormap 1
-#define TargaRGB 2
-#define TargaMonochrome 3
-#define TargaRLEColormap  9
-#define TargaRLERGB  10
-#define TargaRLEMonochrome  11
-
-  typedef struct _TargaInfo
-  {
-    unsigned char
-      id_length,
-      colormap_type,
-      image_type;
-
-    unsigned short
-      colormap_index,
-      colormap_length;
-
-    unsigned char
-      colormap_size;
-
-    unsigned short
-      x_origin,
-      y_origin,
-      width,
-      height;
-
-    unsigned char
-      bits_per_pixel,
-      attributes;
-  } TargaInfo;
-
   const ImageAttribute
     *attribute;
 
@@ -822,11 +810,11 @@
   register unsigned char
     *q;
 
-  TargaInfo
-    targa_info;
+  TGAInfo
+    tga_info;
 
   unsigned char
-    *targa_pixels;
+    *tga_pixels;
 
   unsigned int
     write_grayscale,
@@ -904,23 +892,23 @@
       /*
         Initialize TGA raster file header.
       */
-      targa_info.id_length=0;
+      tga_info.id_length=0;
       attribute=GetImageAttribute(image,"comment");
       if (attribute != (const ImageAttribute *) NULL)
-            {
-                  unsigned char id_length =(unsigned char) strlen(attribute->value);
-          targa_info.id_length=Min(id_length,255);
-            }
-      targa_info.colormap_type=0;
-      targa_info.colormap_index=0;
-      targa_info.colormap_length=0;
-      targa_info.colormap_size=0;
-      targa_info.x_origin=0;
-      targa_info.y_origin=0;
-      targa_info.width=(unsigned short) image->columns;
-      targa_info.height=(unsigned short) image->rows;
-      targa_info.bits_per_pixel=8;
-      targa_info.attributes=0;
+        {
+          unsigned char id_length =(unsigned char) strlen(attribute->value);
+          tga_info.id_length=Min(id_length,255);
+        }
+      tga_info.colormap_type=0;
+      tga_info.colormap_index=0;
+      tga_info.colormap_length=0;
+      tga_info.colormap_size=0;
+      tga_info.x_origin=0;
+      tga_info.y_origin=0;
+      tga_info.width=(unsigned short) image->columns;
+      tga_info.height=(unsigned short) image->rows;
+      tga_info.bits_per_pixel=8;
+      tga_info.attributes=0;
       if (write_grayscale == MagickTrue)
         {
           /*
@@ -928,12 +916,12 @@
           */
           (void) LogMagickEvent(CoderEvent,GetMagickModule(),
                                 "Writing Grayscale raster ...");
-          targa_info.image_type=TargaMonochrome;
-          targa_info.bits_per_pixel=8;
-          targa_info.colormap_type=0;
-          targa_info.colormap_index=0;
-          targa_info.colormap_length=0;
-          targa_info.colormap_size=0;
+          tga_info.image_type=TGAMonochrome;
+          tga_info.bits_per_pixel=8;
+          tga_info.colormap_type=0;
+          tga_info.colormap_index=0;
+          tga_info.colormap_length=0;
+          tga_info.colormap_size=0;
         }
       else if (image->storage_class == DirectClass)
         {
@@ -943,12 +931,12 @@
           (void) LogMagickEvent(CoderEvent,GetMagickModule(),
                                 "Writing TrueColor raster ...");
 
-          targa_info.image_type=TargaRGB;
-          targa_info.bits_per_pixel=24;
+          tga_info.image_type=TGARGB;
+          tga_info.bits_per_pixel=24;
           if (image->matte)
             {
-              targa_info.bits_per_pixel=32;
-              targa_info.attributes=8;  /* # of alpha bits */
+              tga_info.bits_per_pixel=32;
+              tga_info.attributes=8;  /* # of alpha bits */
             }
         }
       else
@@ -958,30 +946,37 @@
           */
           (void) LogMagickEvent(CoderEvent,GetMagickModule(),
                                 "Writing ColorMapped raster ..." );
-          targa_info.image_type=TargaColormap;
-          targa_info.colormap_type=1;
-          targa_info.colormap_index=0;
-          targa_info.colormap_length=(unsigned short) image->colors;
-          targa_info.colormap_size=24;
+          tga_info.image_type=TGAColormap;
+          tga_info.colormap_type=1;
+          tga_info.colormap_index=0;
+          tga_info.colormap_length=(unsigned short) image->colors;
+          tga_info.colormap_size=24;
         }
+
+      if (image->logging)
+        LogTGAInfo(&tga_info);
+
+      if ((image->columns > 65535) || (image->rows > 65535))
+        ThrowWriterException(CoderError,ImageColumnOrRowSizeIsNotSupported, image);
+
       /*
         Write TGA header.
       */
-      (void) WriteBlobByte(image,targa_info.id_length);
-      (void) WriteBlobByte(image,targa_info.colormap_type);
-      (void) WriteBlobByte(image,targa_info.image_type);
-      (void) WriteBlobLSBShort(image,targa_info.colormap_index);
-      (void) WriteBlobLSBShort(image,targa_info.colormap_length);
-      (void) WriteBlobByte(image,targa_info.colormap_size);
-      (void) WriteBlobLSBShort(image,targa_info.x_origin);
-      (void) WriteBlobLSBShort(image,targa_info.y_origin);
-      (void) WriteBlobLSBShort(image,targa_info.width);
-      (void) WriteBlobLSBShort(image,targa_info.height);
-      (void) WriteBlobByte(image,targa_info.bits_per_pixel);
-      (void) WriteBlobByte(image,targa_info.attributes);
-      if (targa_info.id_length != 0)
-        (void) WriteBlob(image,targa_info.id_length,attribute->value);
-      if (targa_info.image_type == TargaColormap)
+      (void) WriteBlobByte(image,tga_info.id_length);
+      (void) WriteBlobByte(image,tga_info.colormap_type);
+      (void) WriteBlobByte(image,tga_info.image_type);
+      (void) WriteBlobLSBShort(image,tga_info.colormap_index);
+      (void) WriteBlobLSBShort(image,tga_info.colormap_length);
+      (void) WriteBlobByte(image,tga_info.colormap_size);
+      (void) WriteBlobLSBShort(image,tga_info.x_origin);
+      (void) WriteBlobLSBShort(image,tga_info.y_origin);
+      (void) WriteBlobLSBShort(image,tga_info.width);
+      (void) WriteBlobLSBShort(image,tga_info.height);
+      (void) WriteBlobByte(image,tga_info.bits_per_pixel);
+      (void) WriteBlobByte(image,tga_info.attributes);
+      if (tga_info.id_length != 0)
+        (void) WriteBlob(image,tga_info.id_length,attribute->value);
+      if (tga_info.image_type == TGAColormap)
         {
           unsigned char
             *targa_colormap;
@@ -990,7 +985,7 @@
             Dump colormap to file (blue, green, red byte order).
           */
           targa_colormap=MagickAllocateArray(unsigned char *,
-                                             targa_info.colormap_length,3);
+                                             tga_info.colormap_length,3);
           if (targa_colormap == (unsigned char *) NULL)
             ThrowWriterException(ResourceLimitError,MemoryAllocationFailed,
                                  image);
@@ -1001,33 +996,33 @@
               *q++=ScaleQuantumToChar(image->colormap[i].green);
               *q++=ScaleQuantumToChar(image->colormap[i].red);
             }
-          (void) WriteBlob(image,3*targa_info.colormap_length,
+          (void) WriteBlob(image,3*tga_info.colormap_length,
                            (char *) targa_colormap);
           MagickFreeMemory(targa_colormap);
         }
       /*
         Convert MIFF to TGA raster pixels.
       */
-      count=(size_t) ((targa_info.bits_per_pixel*targa_info.width) >> 3);
-      targa_pixels=MagickAllocateMemory(unsigned char *,count);
-      if (targa_pixels == (unsigned char *) NULL)
+      count=(size_t) ((MagickArraySize(tga_info.bits_per_pixel,image->columns)) >> 3);
+      tga_pixels=MagickAllocateMemory(unsigned char *,count);
+      if (tga_pixels == (unsigned char *) NULL)
         ThrowWriterException(ResourceLimitError,MemoryAllocationFailed,image);
       for (y=(long) (image->rows-1); y >= 0; y--)
         {
           p=AcquireImagePixels(image,0,y,image->columns,1,&image->exception);
           if (p == (const PixelPacket *) NULL)
             break;
-          q=targa_pixels;
+          q=tga_pixels;
           indexes=AccessImmutableIndexes(image);
           for (x=0; x < (long) image->columns; x++)
             {
-              if (targa_info.image_type == TargaColormap)
+              if (tga_info.image_type == TGAColormap)
                 {
                   /* Colormapped */
                   *q++=*indexes;
                   indexes++;
                 }
-              else if (targa_info.image_type == TargaMonochrome)
+              else if (tga_info.image_type == TGAMonochrome)
                 {
                   /* Grayscale */
                   if (image->storage_class == PseudoClass)
@@ -1057,7 +1052,7 @@
                 }
               p++;
             }
-          (void) WriteBlob(image,q-targa_pixels,(char *) targa_pixels);
+          (void) WriteBlob(image,q-tga_pixels,(char *) tga_pixels);
           if (image->previous == (Image *) NULL)
             if (QuantumTick(y,image->rows))
               if (!MagickMonitorFormatted(y,image->rows,&image->exception,
@@ -1065,7 +1060,7 @@
                                           image->columns,image->rows))
                 break;
         }
-      MagickFreeMemory(targa_pixels);
+      MagickFreeMemory(tga_pixels);
       if (image->next == (Image *) NULL)
         break;
       image=SyncNextImageInList(image);





diff -r 648e3977a293 -r 15d1b5fd003b configure
--- a/configure	Tue Dec 11 20:53:57 2018 -0600
+++ b/configure	Wed Dec 12 19:34:25 2018 -0600
@@ -29263,6 +29263,14 @@
      windows_font_dir='/usr/X11R6/lib/X11/fonts/truetype/'
   fi
 fi
+# Cygwin puts Windows fonts under /usr/share/fonts/microsoft
+if test -n "$windows_font_dir"
+then
+  if test -f '/usr/share/fonts/microsoft/arial.ttf'
+  then
+     windows_font_dir='/usr/share/fonts/microsoft/'
+  fi
+fi
 if test -n "$windows_font_dir"
 then
   type_include_files="$type_include_files "'<include file="type-windows.mgk" />'





diff -r 648e3977a293 -r 15d1b5fd003b configure.ac
--- a/configure.ac	Tue Dec 11 20:53:57 2018 -0600
+++ b/configure.ac	Wed Dec 12 19:34:25 2018 -0600
@@ -2928,6 +2928,14 @@
      windows_font_dir='/usr/X11R6/lib/X11/fonts/truetype/'
   fi
 fi
+# Cygwin puts Windows fonts under /usr/share/fonts/microsoft
+if test -n "$windows_font_dir"
+then
+  if test -f '/usr/share/fonts/microsoft/arial.ttf'
+  then
+     windows_font_dir='/usr/share/fonts/microsoft/'
+  fi
+fi
 if test -n "$windows_font_dir"
 then
   type_include_files="$type_include_files "'<include file="type-windows.mgk" />'