summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Fabbro <bicatali@gentoo.org>2010-01-10 23:39:09 +0000
committerSebastien Fabbro <bicatali@gentoo.org>2010-01-10 23:39:09 +0000
commit9941e0de340a1dabd869926a677dd54662b0e230 (patch)
treeef048c9f90ce76283a66c4f48566604750e39543 /media-gfx
parentfix cpu temp detection - bug #295044 (diff)
downloadhistorical-9941e0de340a1dabd869926a677dd54662b0e230.tar.gz
historical-9941e0de340a1dabd869926a677dd54662b0e230.tar.bz2
historical-9941e0de340a1dabd869926a677dd54662b0e230.zip
Fixed doc installation (bug #297939), perl module (bug #296935), added security patches (bug #295425, bug #295429)
Package-Manager: portage-2.2_rc61/cvs/Linux x86_64
Diffstat (limited to 'media-gfx')
-rw-r--r--media-gfx/graphicsmagick/ChangeLog12
-rw-r--r--media-gfx/graphicsmagick/Manifest15
-rw-r--r--media-gfx/graphicsmagick/files/graphicsmagick-1.3.7-CVE-2009-1882.patch482
-rw-r--r--media-gfx/graphicsmagick/files/graphicsmagick-1.3.7-CVE-2009-3736.patch21
-rw-r--r--media-gfx/graphicsmagick/files/graphicsmagick-1.3.7-perl-ldflags.patch22
-rw-r--r--media-gfx/graphicsmagick/graphicsmagick-1.3.7-r1.ebuild (renamed from media-gfx/graphicsmagick/graphicsmagick-1.3.7.ebuild)34
6 files changed, 571 insertions, 15 deletions
diff --git a/media-gfx/graphicsmagick/ChangeLog b/media-gfx/graphicsmagick/ChangeLog
index beed67a7938a..1de76b1df6e9 100644
--- a/media-gfx/graphicsmagick/ChangeLog
+++ b/media-gfx/graphicsmagick/ChangeLog
@@ -1,6 +1,16 @@
# ChangeLog for media-gfx/graphicsmagick
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-gfx/graphicsmagick/ChangeLog,v 1.51 2010/01/07 22:09:42 fauli Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-gfx/graphicsmagick/ChangeLog,v 1.52 2010/01/10 23:39:09 bicatali Exp $
+
+*graphicsmagick-1.3.7-r1 (11 Jan 2010)
+
+ 11 Jan 2010; SĂ©bastien Fabbro <bicatali@gentoo.org>
+ -graphicsmagick-1.3.7.ebuild, +graphicsmagick-1.3.7-r1.ebuild,
+ +files/graphicsmagick-1.3.7-CVE-2009-1882.patch,
+ +files/graphicsmagick-1.3.7-CVE-2009-3736.patch,
+ +files/graphicsmagick-1.3.7-perl-ldflags.patch:
+ Fixed doc installation (bug #297939), perl module (bug #296935), added
+ security patches (bug #295425, bug #295429)
07 Jan 2010; Christian Faulhammer <fauli@gentoo.org>
graphicsmagick-1.3.7.ebuild:
diff --git a/media-gfx/graphicsmagick/Manifest b/media-gfx/graphicsmagick/Manifest
index e5be4d35c340..5f443add35d8 100644
--- a/media-gfx/graphicsmagick/Manifest
+++ b/media-gfx/graphicsmagick/Manifest
@@ -1,14 +1,17 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
+AUX graphicsmagick-1.3.7-CVE-2009-1882.patch 19819 RMD160 2f011c693e18233354ea5d3e1cf7b5e639f08996 SHA1 8b61f70bbe3e6aadc6ec61e7765a2cb12918ee05 SHA256 e0a64d87ebdabedb6df39a97df31f96792a10464c16d432cc10cf8503fd6a260
+AUX graphicsmagick-1.3.7-CVE-2009-3736.patch 702 RMD160 1501640ef81023b93672eea2ff4c25c1f65abe22 SHA1 93274cac801e1e76bd2406d48d220c8244296e1d SHA256 f55c8ce74c05500432b7c65a1ec66b5c0e405b79264534c6c6b4353879b628c6
+AUX graphicsmagick-1.3.7-perl-ldflags.patch 991 RMD160 e234224a939892f04a82b83e48ef475318183b28 SHA1 5e5c89d808bd3040945c64a60e1f8df35c03053d SHA256 f1ff9bf3009b1e353089ed27067bee2895b4e7f0d9e15100abdebac20bef8644
DIST GraphicsMagick-1.3.7.tar.bz2 6581207 RMD160 56a7408d2f3fc15be2859a0d5b3c42e0549faf0c SHA1 e65c4d799704245216821374f66de5796795c263 SHA256 0d2e8f81574efc7e16c05b72fc9a62a2ba333d6fa196bdb72f8fda8ce7a585fc
-EBUILD graphicsmagick-1.3.7.ebuild 3037 RMD160 92788c2e340f949cb3e6e63c2bdb0e38eea003f0 SHA1 bbd8dbe1db43875a71fe033423395ce9abbb597a SHA256 2c490d1f4772b207f43b9c404edec98e24e16041cfda0565649fe20a2f25ef52
-MISC ChangeLog 3066 RMD160 fbbf92cd81bbfa2033c3e8c5105c24f4af0ae8d6 SHA1 9ddeb4d8e038f22eefab24d732838cc15378eda0 SHA256 e81b9617a788e35049a8beb90be78625697d312d5b98d1cc91791a9e82ead4d6
+EBUILD graphicsmagick-1.3.7-r1.ebuild 3546 RMD160 00a7d6aa4886c1a3ae54c5d731b1072ebc1d1713 SHA1 1651c47d49fd39cae03be62049794ab0196a591b SHA256 64c8f03162c596c180828c8ec180639fe4beb89230a0de595c65eb42344732ef
+MISC ChangeLog 3501 RMD160 c88a9cc0323aa86c9c3ead40bfb2ee6ae801248f SHA1 49eeb731d8ac8156153d87bdce7fd0a291e01d00 SHA256 d9da4a5d99a737ea6fd219785ec0ec3b2e90bbf6ae5890b28d620d5673cf14ca
MISC metadata.xml 903 RMD160 e5fa58daf0c17fb76f9e803549f9c52d9d36f44d SHA1 0db1be15b54789f77946c7dd40cb209da656c542 SHA256 abe3379727737dd6472c47392cebd328a635c08130bd4fa5d71ecf1c1e980a6c
-----BEGIN PGP SIGNATURE-----
-Version: GnuPG v2.0.11 (GNU/Linux)
+Version: GnuPG v2.0.14 (GNU/Linux)
-iEYEARECAAYFAktGW6sACgkQNQqtfCuFneMAtACfU0FshyvYAEbAXIdp7QbJJcU5
-rygAnjEadRMivQv4Lia+TAZPSuuBFrtC
-=kyil
+iEYEARECAAYFAktKbb8ACgkQ1ycZbhPLE2CgKQCfbVAEbYdXQHfA0Pk311oQAeW2
+Px8AnR41AL7X4H9BPfH1sJ0CH8bFSaSz
+=9II/
-----END PGP SIGNATURE-----
diff --git a/media-gfx/graphicsmagick/files/graphicsmagick-1.3.7-CVE-2009-1882.patch b/media-gfx/graphicsmagick/files/graphicsmagick-1.3.7-CVE-2009-1882.patch
new file mode 100644
index 000000000000..04c24036b008
--- /dev/null
+++ b/media-gfx/graphicsmagick/files/graphicsmagick-1.3.7-CVE-2009-1882.patch
@@ -0,0 +1,482 @@
+--- GraphicsMagick/magick/xwindow.c 2009/09/16 02:13:01 1.230
++++ GraphicsMagick/magick/xwindow.c 2009/10/10 17:55:17 1.232
+@@ -43,10 +43,12 @@
+ #include "magick/describe.h"
+ #include "magick/log.h"
+ #include "magick/magick.h"
++#include "magick/monitor.h"
+ #include "magick/pixel_cache.h"
+ #include "magick/resize.h"
+ #include "magick/shear.h"
+ #include "magick/tempfile.h"
++#include "magick/texture.h"
+ #include "magick/transform.h"
+ #include "magick/utility.h"
+ #include "magick/version.h"
+@@ -2937,7 +2939,7 @@ MagickExport void MagickXGetImportInfo(M
+ % %
+ % %
+ % %
+-% M a g i c k X G e t P i x e l I n f o %
++% M a g i c k X G e t P i x e l P a c k e t %
+ % %
+ % %
+ % %
+@@ -5350,8 +5352,8 @@ MagickExport Cursor MagickXMakeCursor(Di
+ % The format of the MagickXMakeImage method is:
+ %
+ % unsigned int MagickXMakeImage(Display *display,
+-% const MagickXResourceInfo *resource_info,MagickXWindowInfo *window,Image *image,
+-% unsigned int width,unsigned int height)
++% const MagickXResourceInfo *resource_info,MagickXWindowInfo *window,
++% Image *image,unsigned int width,unsigned int height)
+ %
+ % A description of each parameter follows:
+ %
+@@ -5376,9 +5378,49 @@ MagickExport Cursor MagickXMakeCursor(Di
+ %
+ %
+ */
+-MagickExport unsigned int MagickXMakeImage(Display *display,
+- const MagickXResourceInfo *resource_info,MagickXWindowInfo *window,Image *image,
+- unsigned int width,unsigned int height)
++static const char *
++MagickXImageFormatToString(int xformat)
++{
++ static const char
++ *formats[] =
++ {
++ "XYBitmap",
++ "XYPixmap",
++ "ZPixmap"
++ };
++
++ const char
++ *format = "Unknown";
++
++ if ((size_t) xformat < sizeof(formats)/sizeof(formats[0]))
++ format=formats[xformat];
++
++ return format;
++}
++static const char *
++MagickXByteOrderToString(int xbyte_order)
++{
++ static const char
++ *byte_orders[] =
++ {
++ "LSBFirst",
++ "MSBFirst"
++ };
++
++ const char
++ *byte_order = "Unknown";
++
++ if ((size_t) xbyte_order < sizeof(byte_orders)/sizeof(byte_orders[0]))
++ byte_order=byte_orders[xbyte_order];
++
++ return byte_order;
++}
++MagickExport unsigned int
++MagickXMakeImage(Display *display,
++ const MagickXResourceInfo *resource_info,
++ MagickXWindowInfo *window,
++ Image *image,
++ unsigned int width,unsigned int height)
+ {
+ int
+ depth,
+@@ -5410,6 +5452,10 @@ MagickExport unsigned int MagickXMakeIma
+ window->destroy=False;
+ if (window->image != (Image *) NULL)
+ {
++ MonitorHandler
++ handler=(MonitorHandler) NULL;
++
++ handler=SetMonitorHandler((MonitorHandler) NULL);
+ if (window->crop_geometry)
+ {
+ Image
+@@ -5459,44 +5505,49 @@ MagickExport unsigned int MagickXMakeIma
+ window->destroy=MagickTrue;
+ }
+ }
+-#if 0
+- if ((window->immutable == MagickFalse) &&
+- (window->image->matte != MagickFalse) &&
+- (window->pixel_info->colors == 0))
++ if ((window->image->matte != MagickFalse) &&
++ (window->pixel_info->colors == 0)
++ /* && (window->immutable == MagickFalse) */)
+ {
+ Image
+ *texture;
+
+ /*
+- Tile background with texture.
++ Tile background with texture according to opacity
+ */
+- strlcpy(resource_info->image_info->filename,"image:checkerboard",MaxTextExtent);
++ strlcpy(resource_info->image_info->filename,"image:checkerboard",
++ sizeof(resource_info->image_info->filename));
+ texture=ReadImage(resource_info->image_info,&window->image->exception);
+ if (texture != (Image *) NULL)
+ {
+ Image
+ *textured_image;
+
+- textured_image=CloneImage(window->image,window->image->columns,
+- window->image->rows,MagickTrue,&window->image->exception);
++ textured_image=CloneImage(window->image,0,0,MagickTrue,
++ &window->image->exception);
+ if (textured_image != (Image *) NULL)
+ {
+-/* strlcpy(window->image->filename,"textured_image.miff", MaxTextExtent); */
+-/* WriteImage(resource_info->image_info,window->image); */
+- TextureImage(textured_image,texture);
+- textured_image->matte=MagickFalse;
+- if (window->image != image)
+- DestroyImage(window->image);
+- window->image=textured_image;
+- window->destroy=MagickTrue;
++ if (TextureImage(textured_image,texture) != MagickFail)
++ {
++ if (window->image != image)
++ DestroyImage(window->image);
++ window->image=textured_image;
++ window->destroy=MagickTrue;
++ }
++ else
++ {
++ DestroyImage(textured_image);
++ }
+ }
+ DestroyImage(texture);
+ texture=(Image *) NULL;
+ }
+ }
+-#endif
+ width=(unsigned int) window->image->columns;
++ assert(width == window->image->columns);
+ height=(unsigned int) window->image->rows;
++ assert(height == window->image->rows);
++ (void) SetMonitorHandler(handler);
+ }
+ /*
+ Create X image.
+@@ -5504,27 +5555,32 @@ MagickExport unsigned int MagickXMakeIma
+ ximage=(XImage *) NULL;
+ format=(depth == 1) ? XYBitmap : ZPixmap;
+ #if defined(HasSharedMemory)
+- window->shared_memory&=XShmQueryExtension(display);
++ window->shared_memory &= XShmQueryExtension(display);
+ if (window->shared_memory)
+ {
+ XShmSegmentInfo
+ *segment_info;
+
++ size_t
++ shm_extent;
++
+ segment_info=(XShmSegmentInfo *) window->segment_info;
+ segment_info[1].shmid=(-1);
+ segment_info[1].shmaddr=NULL;
+ ximage=XShmCreateImage(display,window->visual,depth,format,(char *) NULL,
+- &segment_info[1],width,height);
+- window->shared_memory&=(ximage != (XImage *) NULL);
++ &segment_info[1],width,height);
++ window->shared_memory &= (ximage != (XImage *) NULL);
++
++ shm_extent=MagickArraySize(ximage->height,ximage->bytes_per_line);
++ window->shared_memory &= (shm_extent != 0);
+
+ if (window->shared_memory)
+- segment_info[1].shmid=shmget(IPC_PRIVATE,(size_t)
+- (ximage->bytes_per_line*ximage->height),IPC_CREAT | 0777);
+- window->shared_memory&=(segment_info[1].shmid >= 0);
++ segment_info[1].shmid=shmget(IPC_PRIVATE,shm_extent,IPC_CREAT | 0777);
++ window->shared_memory &= (segment_info[1].shmid >= 0);
+
+ if (window->shared_memory)
+ segment_info[1].shmaddr=(char *) MagickShmAt(segment_info[1].shmid,0,0);
+- window->shared_memory&=(segment_info[1].shmaddr != NULL);
++ window->shared_memory &= (segment_info[1].shmaddr != NULL);
+
+ if (!window->shared_memory)
+ {
+@@ -5607,12 +5663,12 @@ MagickExport unsigned int MagickXMakeIma
+ if (IsEventLogging())
+ {
+ (void) LogMagickEvent(X11Event,GetMagickModule(),"XImage:");
+- (void) LogMagickEvent(X11Event,GetMagickModule()," width, height: %dx%d",
++ (void) LogMagickEvent(X11Event,GetMagickModule()," width x height: %dx%d",
+ ximage->width,ximage->height);
+- (void) LogMagickEvent(X11Event,GetMagickModule()," format: %d",
+- ximage->format);
+- (void) LogMagickEvent(X11Event,GetMagickModule()," byte order: %d",
+- ximage->byte_order);
++ (void) LogMagickEvent(X11Event,GetMagickModule()," format: %s",
++ MagickXImageFormatToString(ximage->format));
++ (void) LogMagickEvent(X11Event,GetMagickModule()," byte order: %s",
++ MagickXByteOrderToString(ximage->byte_order));
+ (void) LogMagickEvent(X11Event,GetMagickModule(),
+ " bitmap unit, bit order, pad: %d %d %d",ximage->bitmap_unit,
+ ximage->bitmap_bit_order,ximage->bitmap_pad);
+@@ -5629,11 +5685,13 @@ MagickExport unsigned int MagickXMakeIma
+ if (!window->shared_memory)
+ {
+ if (ximage->format == XYBitmap)
+- ximage->data=MagickAllocateArray(char *,
+- ximage->height*ximage->depth,ximage->bytes_per_line);
++ ximage->data=
++ MagickAllocateArray(char *,
++ MagickArraySize(ximage->height,ximage->bytes_per_line),
++ ximage->depth);
+ else
+- ximage->data=MagickAllocateArray(char *,
+- ximage->height,ximage->bytes_per_line);
++ ximage->data=
++ MagickAllocateArray(char *,ximage->height,ximage->bytes_per_line);
+ }
+ if (ximage->data == (char *) NULL)
+ {
+@@ -5709,8 +5767,9 @@ MagickExport unsigned int MagickXMakeIma
+ /*
+ Allocate matte image pixel data.
+ */
+- length=matte_image->bytes_per_line*
+- matte_image->height*matte_image->depth;
++ length=MagickArraySize(MagickArraySize(matte_image->bytes_per_line,
++ matte_image->height),
++ matte_image->depth);
+ matte_image->data=MagickAllocateMemory(char *,length);
+ if (matte_image->data == (char *) NULL)
+ {
+@@ -7371,9 +7430,9 @@ MagickExport void MagickXMakeMagnifyImag
+ %
+ % The format of the MagickXMakePixmap method is:
+ %
+-% void MagickXMakeStandardColormap(Display *display,XVisualInfo *visual_info,
+-% MagickXResourceInfo *resource_info,Image *image,XStandardColormap *map_info,
+-% MagickXPixelInfo *pixel)
++% unsigned int MagickXMakePixmap(Display *display,
++% const MagickXResourceInfo *resource_info,
++% MagickXWindowInfo *window)
+ %
+ % A description of each parameter follows:
+ %
+--- GraphicsMagick/magick/xwindow.c 2009/10/10 17:55:17 1.232
++++ GraphicsMagick/magick/xwindow.c 2009/10/11 00:46:55 1.233
+@@ -1,5 +1,5 @@
+ /*
+-% Copyright (C) 2003, 2004 GraphicsMagick Group
++% Copyright (C) 2003 - 2009 GraphicsMagick Group
+ % Copyright (C) 2002 ImageMagick Studio
+ %
+ % This program is covered by multiple licenses, which are described in
+@@ -808,7 +808,7 @@ static char **MagickFontToList(char *fon
+ for (p=font; *p != '\0'; p++)
+ if ((*p == ':') || (*p == ';') || (*p == ','))
+ fonts++;
+- fontlist=MagickAllocateMemory(char **,(fonts+1)*sizeof(char *));
++ fontlist=MagickAllocateArray(char **,(fonts+1),sizeof(char *));
+ if (fontlist == (char **) NULL)
+ {
+ MagickError3(ResourceLimitError,MemoryAllocationFailed,
+@@ -1103,7 +1103,7 @@ MagickExport void MagickXBestPixel(Displ
+ /*
+ Read X server colormap.
+ */
+- colors=MagickAllocateMemory(XColor *,number_colors*sizeof(XColor));
++ colors=MagickAllocateArray(XColor *,number_colors,sizeof(XColor));
+ if (colors == (XColor *) NULL)
+ {
+ MagickError3(ResourceLimitError,MemoryAllocationFailed,
+@@ -2133,10 +2133,10 @@ static void MagickXDitherImage(Image *im
+ for (i=0; i < 2; i++)
+ for (j=0; j < 16; j++)
+ {
+- red_map[i][j]=MagickAllocateMemory(unsigned char *,256*sizeof(unsigned char));
+- green_map[i][j]=MagickAllocateMemory(unsigned char *,
+- 256*sizeof(unsigned char));
+- blue_map[i][j]=MagickAllocateMemory(unsigned char *,256*sizeof(unsigned char));
++ red_map[i][j]=MagickAllocateArray(unsigned char *,256,sizeof(unsigned char));
++ green_map[i][j]=MagickAllocateArray(unsigned char *,
++ 256,sizeof(unsigned char));
++ blue_map[i][j]=MagickAllocateArray(unsigned char *,256,sizeof(unsigned char));
+ if ((red_map[i][j] == (unsigned char *) NULL) ||
+ (green_map[i][j] == (unsigned char *) NULL) ||
+ (blue_map[i][j] == (unsigned char *) NULL))
+@@ -3022,7 +3022,7 @@ MagickExport void MagickXGetPixelPacket(
+ if (pixel->pixels != (unsigned long *) NULL)
+ MagickFreeMemory(pixel->pixels);
+ pixel->pixels=
+- MagickAllocateMemory(unsigned long *,packets*sizeof(unsigned long));
++ MagickAllocateArray(unsigned long *,packets,sizeof(unsigned long));
+ if (pixel->pixels == (unsigned long *) NULL)
+ MagickFatalError(ResourceLimitFatalError,MemoryAllocationFailed,
+ MagickMsg(XServerFatalError,UnableToGetPixelInfo));
+@@ -4073,8 +4073,8 @@ static Image *MagickXGetWindowImage(Disp
+ */
+ max_windows+=1024;
+ if (window_info == (WindowInfo *) NULL)
+- window_info=MagickAllocateMemory(WindowInfo *,
+- max_windows*sizeof(WindowInfo));
++ window_info=MagickAllocateArray(WindowInfo *,
++ max_windows,sizeof(WindowInfo));
+ else
+ MagickReallocMemory(WindowInfo *,window_info,max_windows*sizeof(WindowInfo));
+ }
+@@ -4227,7 +4227,7 @@ static Image *MagickXGetWindowImage(Disp
+ /*
+ Get the window colormap.
+ */
+- colors=MagickAllocateMemory(XColor *,number_colors*sizeof(XColor));
++ colors=MagickAllocateArray(XColor *,number_colors,sizeof(XColor));
+ if (colors == (XColor *) NULL)
+ {
+ XDestroyImage(ximage);
+@@ -4577,7 +4577,7 @@ MagickExport void MagickXGetWindowInfo(D
+ *segment_info;
+
+ if (window->segment_info == (void *) NULL)
+- window->segment_info=MagickAllocateMemory(void *,2*sizeof(XShmSegmentInfo));
++ window->segment_info=MagickAllocateArray(void *,2,sizeof(XShmSegmentInfo));
+ segment_info=(XShmSegmentInfo *) window->segment_info;
+ segment_info[0].shmid=(-1);
+ segment_info[0].shmaddr=NULL;
+@@ -7734,8 +7734,8 @@ MagickExport void MagickXMakeStandardCol
+ Define Standard Colormap for StaticGray or StaticColor visual.
+ */
+ number_colors=image->colors;
+- colors=MagickAllocateMemory(XColor *,
+- visual_info->colormap_size*sizeof(XColor));
++ colors=MagickAllocateArray(XColor *,
++ visual_info->colormap_size,sizeof(XColor));
+ if (colors == (XColor *) NULL)
+ MagickFatalError3(ResourceLimitError,MemoryAllocationFailed,
+ UnableToCreateColormap);
+@@ -7774,8 +7774,8 @@ MagickExport void MagickXMakeStandardCol
+ Define Standard Colormap for GrayScale or PseudoColor visual.
+ */
+ number_colors=image->colors;
+- colors=MagickAllocateMemory(XColor *,
+- visual_info->colormap_size*sizeof(XColor));
++ colors=MagickAllocateArray(XColor *,
++ visual_info->colormap_size,sizeof(XColor));
+ if (colors == (XColor *) NULL)
+ MagickFatalError3(ResourceLimitFatalError,MemoryAllocationFailed,
+ UnableToCreateColormap);
+@@ -7820,8 +7820,8 @@ MagickExport void MagickXMakeStandardCol
+ /*
+ Define Standard colormap for shared GrayScale or PseudoColor visual.
+ */
+- diversity=MagickAllocateMemory(DiversityPacket *,
+- image->colors*sizeof(DiversityPacket));
++ diversity=MagickAllocateArray(DiversityPacket *,
++ image->colors,sizeof(DiversityPacket));
+ if (diversity == (DiversityPacket *) NULL)
+ MagickFatalError3(ResourceLimitFatalError,MemoryAllocationFailed,
+ UnableToCreateColormap);
+@@ -7882,8 +7882,9 @@ MagickExport void MagickXMakeStandardCol
+ /*
+ Read X server colormap.
+ */
+- server_colors=MagickAllocateMemory(XColor *,
+- visual_info->colormap_size*sizeof(XColor));
++ server_colors=MagickAllocateArray(XColor *,
++ visual_info->colormap_size,
++ sizeof(XColor));
+ if (server_colors == (XColor *) NULL)
+ MagickFatalError3(ResourceLimitFatalError,MemoryAllocationFailed,
+ UnableToCreateColormap);
+@@ -8023,7 +8024,7 @@ MagickExport void MagickXMakeStandardCol
+ /*
+ Allocate color array.
+ */
+- colors=MagickAllocateMemory(XColor *,number_colors*sizeof(XColor));
++ colors=MagickAllocateArray(XColor *,number_colors,sizeof(XColor));
+ if (colors == (XColor *) NULL)
+ MagickFatalError3(ResourceLimitFatalError,MemoryAllocationFailed,
+ UnableToCreateColormap);
+--- GraphicsMagick/magick/memory.c 2009/10/05 23:57:54 1.54
++++ GraphicsMagick/magick/memory.c 2009/10/09 18:20:22 1.55
+@@ -90,6 +90,43 @@ MagickExport void MagickAllocFunctions(M
+ % %
+ % %
+ % %
+++ M a g i c k A r r a y Si z e %
++% %
++% %
++% %
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
++%
++% MagickArraySize() returnes the size of an array given two size_t arguments.
++% Zero is returned if the computed result overflows the size_t type.
++%
++% The format of the MagickArraySize method is:
++%
++% size_t MagickArraySize(const size_t count, const size_t size);
++%
++% A description of each parameter follows:
++%
++% o count: The number of elements in the array.
++%
++% o size: The size of one array element.
++%
++*/
++MagickExport size_t MagickArraySize(const size_t count, const size_t size)
++{
++ size_t
++ allocation_size;
++
++ allocation_size = size * count;
++ if ((count != 0) && (size != allocation_size/count))
++ allocation_size = 0;
++
++ return allocation_size;
++}
++
++/*
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
++% %
++% %
++% %
+ % M a g i c k M a l l o c %
+ % %
+ % %
+@@ -155,9 +192,8 @@ MagickExport void *MagickMallocArray(con
+ *allocation;
+
+ allocation = (void *) NULL;
+- allocation_size = size * count;
+- if ((count != 0) && (size != allocation_size/count))
+- allocation_size = 0;
++ allocation_size=MagickArraySize(count,size);
++
+ if (allocation_size)
+ allocation = (MallocFunc)(allocation_size);
+ return allocation;
+--- GraphicsMagick/magick/memory.h 2009/06/10 00:38:07 1.16
++++ GraphicsMagick/magick/memory.h 2009/10/09 18:20:22 1.17
+@@ -22,7 +22,6 @@ extern MagickExport void
+ MagickAllocFunctions(MagickFreeFunc free_func,MagickMallocFunc malloc_func,
+ MagickReallocFunc realloc_func),
+ *MagickMalloc(const size_t size),
+- *MagickMallocArray(const size_t count,const size_t size),
+ *MagickMallocCleared(const size_t size),
+ *MagickCloneMemory(void *destination,const void *source,const size_t size),
+ *MagickRealloc(void *memory,const size_t size),
+@@ -30,6 +29,12 @@ extern MagickExport void
+
+ #if defined(MAGICK_IMPLEMENTATION)
+
++extern MagickExport void
++ *MagickMallocArray(const size_t count,const size_t size);
++
++extern MagickExport size_t
++ MagickArraySize(const size_t count,const size_t size);
++
+ /*
+ Allocate memory
+ */
diff --git a/media-gfx/graphicsmagick/files/graphicsmagick-1.3.7-CVE-2009-3736.patch b/media-gfx/graphicsmagick/files/graphicsmagick-1.3.7-CVE-2009-3736.patch
new file mode 100644
index 000000000000..e6f039631ed5
--- /dev/null
+++ b/media-gfx/graphicsmagick/files/graphicsmagick-1.3.7-CVE-2009-3736.patch
@@ -0,0 +1,21 @@
+--- ltdl/ltdl.c 2008-09-09 03:35:02.000000000 +0200
++++ ltdl/ltdl.c.oden 2009-11-19 16:20:03.000000000 +0100
+@@ -529,7 +529,8 @@ find_module (lt_dlhandle *handle, const
+ /* Try to open the old library first; if it was dlpreopened,
+ we want the preopened version of it, even if a dlopenable
+ module is available. */
+- if (old_name && tryall_dlopen (handle, old_name, advise, 0) == 0)
++ if (old_name && tryall_dlopen (handle, old_name,
++ advise, lt_dlloader_find ("lt_preopen") ) == 0)
+ {
+ return 0;
+ }
+@@ -1345,7 +1346,7 @@ try_dlopen (lt_dlhandle *phandle, const
+ }
+ #endif
+ }
+- if (!file)
++ else
+ {
+ file = fopen (attempt, LT_READTEXT_MODE);
+ }
diff --git a/media-gfx/graphicsmagick/files/graphicsmagick-1.3.7-perl-ldflags.patch b/media-gfx/graphicsmagick/files/graphicsmagick-1.3.7-perl-ldflags.patch
new file mode 100644
index 000000000000..dd231dbf5776
--- /dev/null
+++ b/media-gfx/graphicsmagick/files/graphicsmagick-1.3.7-perl-ldflags.patch
@@ -0,0 +1,22 @@
+--- PerlMagick/Makefile.PL.in.orig 2010-01-10 20:05:53.000000000 +0000
++++ PerlMagick/Makefile.PL.in 2010-01-10 23:27:53.000000000 +0000
+@@ -58,16 +58,16 @@
+ 'LD' => $Config{'ld'} == $Config{'cc'} ? '@CC@' : $Config{'ld'},
+
+ # Linker flags for building an executable
+- 'LDFLAGS' => "-L@MAGICKLIBDIR@ $Config{'ldflags'}",
++ 'LDFLAGS' => "$Config{'ldflags'} @LDFLAGS@",
+
+ # Linker flags for building a dynamically loadable module
+- 'LDDLFLAGS' => "-L@MAGICKLIBDIR@ $Config{'lddlflags'}",
++ 'LDDLFLAGS' => "$Config{'ldflags'} @LDFLAGS@ -L@MAGICKLIBDIR@ $Config{'lddlflags'}",
+
+ # Install PerlMagick binary into GraphicsMagick bin directory
+ 'INSTALLBIN' => '@BIN_DIR@',
+
+ # Library specification
+- 'LIBS' => ['-L@MAGICKLIBDIR@ -lGraphicsMagick @LDFLAGS@ @MAGICK_DEP_LIBS@'],
++ 'LIBS' => ['@LDFLAGS@ -L@MAGICKLIBDIR@ -lGraphicsMagick @MAGICK_DEP_LIBS@'],
+
+ # Perl binary name (if a Perl binary is built)
+ 'MAP_TARGET' => 'PerlMagick',
diff --git a/media-gfx/graphicsmagick/graphicsmagick-1.3.7.ebuild b/media-gfx/graphicsmagick/graphicsmagick-1.3.7-r1.ebuild
index 1d3b47f00a25..ca82b8b8f763 100644
--- a/media-gfx/graphicsmagick/graphicsmagick-1.3.7.ebuild
+++ b/media-gfx/graphicsmagick/graphicsmagick-1.3.7-r1.ebuild
@@ -1,10 +1,10 @@
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-gfx/graphicsmagick/graphicsmagick-1.3.7.ebuild,v 1.3 2010/01/07 22:09:42 fauli Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-gfx/graphicsmagick/graphicsmagick-1.3.7-r1.ebuild,v 1.1 2010/01/10 23:39:09 bicatali Exp $
EAPI="2"
-inherit toolchain-funcs flag-o-matic perl-app
+inherit eutils toolchain-funcs flag-o-matic perl-app
MY_P=${P/graphicsm/GraphicsM}
@@ -15,7 +15,7 @@ SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tar.bz2"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux ~ppc-macos"
-IUSE="bzip2 cxx debug fpx -gs imagemagick jbig +jpeg +jpeg2k lcms openmp
+IUSE="bzip2 cxx debug doc fpx -gs imagemagick jbig +jpeg +jpeg2k lcms openmp
perl +png q16 q32 +svg +threads tiff +truetype X wmf zlib"
RDEPEND="bzip2? ( app-arch/bzip2 )
@@ -41,6 +41,13 @@ DEPEND="${RDEPEND}"
S="${WORKDIR}/${MY_P}"
+PATCHES=(
+ "${FILESDIR}/${P}-CVE-2009-1882.patch"
+ "${FILESDIR}/${P}-CVE-2009-3736.patch"
+ "${FILESDIR}/${P}-perl-ldflags.patch"
+)
+# "${FILESDIR}/${P}-perl-link.patch"
+
pkg_setup() {
if use openmp &&
[[ $(tc-getCC)$ == *gcc* ]] &&
@@ -67,6 +74,8 @@ src_configure() {
use debug && filter-flags -fomit-frame-pointer
econf \
+ --docdir=/usr/share/doc/${PF} \
+ --htmldir=/usr/share/doc/${PF}/html \
--enable-shared \
--enable-largefile \
--without-included-ltdl \
@@ -97,16 +106,25 @@ src_configure() {
$(use_with zlib)
}
+src_compile() {
+ emake || die "emake failed"
+ if use perl; then
+ emake perl-build || die "emake perl failed"
+ fi
+}
+
src_test() {
emake check || die "tests failed"
}
src_install() {
- emake DESTDIR="${D}" install || die "Installation failed"
- dodoc README.txt ChangeLog* NEWS.txt TODO.txt
-
- # Fix perllocal.pod file collision
- use perl && fixlocalpod
+ emake DESTDIR="${D}" install || die "emake install failed"
+ if use perl; then
+ perl -MExtUtils::MakeMaker -e 'MY->fixin(@ARGV)' PerlMagick/demo/*.pl
+ emake -C PerlMagick DESTDIR="${D}" install || die "emake perl install failed"
+ fixlocalpod
+ fi
+ use doc || rm -rf "${D}"usr/share/doc/${PF}/html
}
pkg_postinst() {