diff options
author | 2010-01-10 23:39:09 +0000 | |
---|---|---|
committer | 2010-01-10 23:39:09 +0000 | |
commit | 9941e0de340a1dabd869926a677dd54662b0e230 (patch) | |
tree | ef048c9f90ce76283a66c4f48566604750e39543 /media-gfx | |
parent | fix cpu temp detection - bug #295044 (diff) | |
download | historical-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/ChangeLog | 12 | ||||
-rw-r--r-- | media-gfx/graphicsmagick/Manifest | 15 | ||||
-rw-r--r-- | media-gfx/graphicsmagick/files/graphicsmagick-1.3.7-CVE-2009-1882.patch | 482 | ||||
-rw-r--r-- | media-gfx/graphicsmagick/files/graphicsmagick-1.3.7-CVE-2009-3736.patch | 21 | ||||
-rw-r--r-- | media-gfx/graphicsmagick/files/graphicsmagick-1.3.7-perl-ldflags.patch | 22 | ||||
-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() { |