]> granicus.if.org Git - imagemagick/commitdiff
Respect resource limits.
authorcristy <urban-warrior@git.imagemagick.org>
Fri, 19 Jun 2015 18:38:04 +0000 (18:38 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Fri, 19 Jun 2015 18:38:04 +0000 (18:38 +0000)
coders/avs.c

index a2466e6f11bd01c904892273def3f12b15822bb1..0deb5aa884de8d62fa8c2bc455f9ff59310de512 100644 (file)
@@ -100,6 +100,9 @@ static Image *ReadAVSImage(const ImageInfo *image_info,ExceptionInfo *exception)
   MagickBooleanType
     status;
 
+  MemoryInfo
+    *pixel_info;
+
   register Quantum
     *q;
 
@@ -161,10 +164,10 @@ static Image *ReadAVSImage(const ImageInfo *image_info,ExceptionInfo *exception)
     status=SetImageExtent(image,image->columns,image->rows,exception);
     if (status == MagickFalse)
       return(DestroyImageList(image));
-    pixels=(unsigned char *) AcquireQuantumMemory(image->columns,
-      4*sizeof(*pixels));
-    if (pixels == (unsigned char *) NULL) 
+    pixel_info=AcquireVirtualMemory(image->columns,4*sizeof(*pixels));
+    if (pixel_info == (MemoryInfo *) NULL)
       ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
+    pixels=(unsigned char *) GetVirtualMemoryBlob(pixel_info);
     length=(size_t) 4*image->columns;
     for (y=0; y < (ssize_t) image->rows; y++)
     {
@@ -195,7 +198,7 @@ static Image *ReadAVSImage(const ImageInfo *image_info,ExceptionInfo *exception)
             break;
         }
     }
-    pixels=(unsigned char *) RelinquishMagickMemory(pixels);
+    pixel_info=RelinquishVirtualMemory(pixel_info);
     if (EOFBlob(image) != MagickFalse)
       {
         ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
@@ -326,6 +329,9 @@ static MagickBooleanType WriteAVSImage(const ImageInfo *image_info,Image *image,
   MagickOffsetType
     scene;
 
+  MemoryInfo
+    *pixel_info;
+
   register const Quantum
     *restrict p;
 
@@ -368,10 +374,10 @@ static MagickBooleanType WriteAVSImage(const ImageInfo *image_info,Image *image,
     /*
       Allocate memory for pixels.
     */
-    pixels=(unsigned char *) AcquireQuantumMemory(image->columns,
-      4*sizeof(*pixels));
-    if (pixels == (unsigned char *) NULL)
+    pixel_info=AcquireVirtualMemory(image->columns,4*sizeof(*pixels));
+    if (pixel_info == (MemoryInfo *) NULL)
       ThrowWriterException(ResourceLimitError,"MemoryAllocationFailed");
+    pixels=(unsigned char *) GetVirtualMemoryBlob(pixel_info);
     /*
       Convert MIFF to AVS raster pixels.
     */
@@ -401,7 +407,7 @@ static MagickBooleanType WriteAVSImage(const ImageInfo *image_info,Image *image,
             break;
         }
     }
-    pixels=(unsigned char *) RelinquishMagickMemory(pixels);
+    pixel_info=RelinquishVirtualMemory(pixel_info);
     if (GetNextImageInList(image) == (Image *) NULL)
       break;
     image=SyncNextImageInList(image);