guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/01: gnu: giflib: Make "reallocarray" private, solve address@hidden co


From: Hartmut Goebel
Subject: 01/01: gnu: giflib: Make "reallocarray" private, solve address@hidden conflict.
Date: Thu, 8 Mar 2018 03:06:35 -0500 (EST)

htgoebel pushed a commit to branch staging-next
in repository guix.

commit 7ac43c44e80541a53ed1751de904b0d8a5dc3a4a
Author: Hartmut Goebel <address@hidden>
Date:   Wed Feb 28 20:43:21 2018 +0100

    gnu: giflib: Make "reallocarray" private, solve address@hidden conflict.
    
    Rename the function and move the declaration from gif_lib.h to
    gif_lib_private.h to solve conflicts when some .c-file #includes
    both stdlib.h and gif_lib.h.
    See also https://sourceforge.net/p/giflib/bugs/110/
    
    * gnu/packages/patches/giflib-make-reallocarray-private.patch: New
      file
    * gnu/local.mk (dist_patch_DATA): Register it.
    * gnu/packages/image.scm(giflib)[source](patches): New field.
---
 gnu/local.mk                                       |   1 +
 gnu/packages/image.scm                             |   4 +-
 .../patches/giflib-make-reallocarray-private.patch | 120 +++++++++++++++++++++
 3 files changed, 124 insertions(+), 1 deletion(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index d90d8a3..c26d0e4 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -697,6 +697,7 @@ dist_patch_DATA =                                           
\
   %D%/packages/patches/ghostscript-no-header-uuid.patch                \
   %D%/packages/patches/ghostscript-no-header-creationdate.patch \
   %D%/packages/patches/ghostscript-runpath.patch               \
+  %D%/packages/patches/giflib-make-reallocarray-private.patch  \
   %D%/packages/patches/gimp-CVE-2017-17784.patch               \
   %D%/packages/patches/gimp-CVE-2017-17785.patch               \
   %D%/packages/patches/gimp-CVE-2017-17786.patch               \
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index e3e3a3c..a397189 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -572,7 +572,9 @@ error-resilience, a Java-viewer for j2k-images, ...")
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "1md83dip8rf29y40cm5r7nn19705f54iraz6545zhwa6y8zyq9yz"))))
+                "1md83dip8rf29y40cm5r7nn19705f54iraz6545zhwa6y8zyq9yz"))
+              (patches (search-patches
+                        "giflib-make-reallocarray-private.patch"))))
     (build-system gnu-build-system)
     (outputs '("bin"                    ; utility programs
                "out"))                  ; library
diff --git a/gnu/packages/patches/giflib-make-reallocarray-private.patch 
b/gnu/packages/patches/giflib-make-reallocarray-private.patch
new file mode 100644
index 0000000..69228c5
--- /dev/null
+++ b/gnu/packages/patches/giflib-make-reallocarray-private.patch
@@ -0,0 +1,120 @@
+Move the declaration from gif_lib.h to gif_lib_private.h to solve
+conflicts when some .c-file #includes both stdlib.h and gif_lib.h.
+See also https://sourceforge.net/p/giflib/bugs/110/
+
+diff -ur giflib-5.1.4.orig/lib/dgif_lib.c giflib-5.1.4/lib/dgif_lib.c
+--- giflib-5.1.4.orig/lib/dgif_lib.c   2018-02-28 20:31:02.294682673 +0100
++++ giflib-5.1.4/lib/dgif_lib.c        2018-02-28 22:38:11.659126414 +0100
+@@ -396,7 +396,7 @@
+ 
+     if (GifFile->SavedImages) {
+         SavedImage* new_saved_images =
+-            (SavedImage *)reallocarray(GifFile->SavedImages,
++            (SavedImage *)giflib_private_reallocarray(GifFile->SavedImages,
+                             (GifFile->ImageCount + 1), sizeof(SavedImage));
+         if (new_saved_images == NULL) {
+             GifFile->Error = D_GIF_ERR_NOT_ENOUGH_MEM;
+@@ -1108,7 +1108,7 @@
+               if (ImageSize > (SIZE_MAX / sizeof(GifPixelType))) {
+                   return GIF_ERROR;
+               }
+-              sp->RasterBits = (unsigned char *)reallocarray(NULL, ImageSize,
++              sp->RasterBits = (unsigned char 
*)giflib_private_reallocarray(NULL, ImageSize,
+                       sizeof(GifPixelType));
+ 
+               if (sp->RasterBits == NULL) {
+diff -ur giflib-5.1.4.orig/lib/gifalloc.c giflib-5.1.4/lib/gifalloc.c
+--- giflib-5.1.4.orig/lib/gifalloc.c   2018-02-28 20:31:02.294682673 +0100
++++ giflib-5.1.4/lib/gifalloc.c        2018-02-28 22:38:11.657126423 +0100
+@@ -8,7 +8,7 @@
+ #include <stdio.h>
+ #include <string.h>
+ 
+-#include "gif_lib.h"
++#include "gif_lib_private.h"
+ 
+ #define MAX(x, y)    (((x) > (y)) ? (x) : (y))
+ 
+@@ -188,7 +188,7 @@
+ 
+         /* perhaps we can shrink the map? */
+         if (RoundUpTo < ColorUnion->ColorCount) {
+-            GifColorType *new_map = (GifColorType *)reallocarray(Map,
++            GifColorType *new_map = (GifColorType 
*)giflib_private_reallocarray(Map,
+                                  RoundUpTo, sizeof(GifColorType));
+             if( new_map == NULL ) {
+                 GifFreeMapObject(ColorUnion);
+@@ -232,7 +232,7 @@
+     if (*ExtensionBlocks == NULL)
+         *ExtensionBlocks=(ExtensionBlock *)malloc(sizeof(ExtensionBlock));
+     else {
+-        ExtensionBlock* ep_new = (ExtensionBlock *)reallocarray
++        ExtensionBlock* ep_new = (ExtensionBlock *)giflib_private_reallocarray
+                                (*ExtensionBlocks, (*ExtensionBlockCount + 1),
+                                       sizeof(ExtensionBlock));
+         if( ep_new == NULL )
+@@ -325,7 +325,7 @@
+     if (GifFile->SavedImages == NULL)
+         GifFile->SavedImages = (SavedImage *)malloc(sizeof(SavedImage));
+     else
+-        GifFile->SavedImages = (SavedImage 
*)reallocarray(GifFile->SavedImages,
++        GifFile->SavedImages = (SavedImage 
*)giflib_private_reallocarray(GifFile->SavedImages,
+                                (GifFile->ImageCount + 1), sizeof(SavedImage));
+ 
+     if (GifFile->SavedImages == NULL)
+@@ -355,7 +355,7 @@
+             }
+ 
+             /* next, the raster */
+-            sp->RasterBits = (unsigned char *)reallocarray(NULL,
++            sp->RasterBits = (unsigned char 
*)giflib_private_reallocarray(NULL,
+                                                   (CopyFrom->ImageDesc.Height 
*
+                                                   CopyFrom->ImageDesc.Width),
+                                                 sizeof(GifPixelType));
+@@ -369,7 +369,7 @@
+ 
+             /* finally, the extension blocks */
+             if (sp->ExtensionBlocks != NULL) {
+-                sp->ExtensionBlocks = (ExtensionBlock *)reallocarray(NULL,
++                sp->ExtensionBlocks = (ExtensionBlock 
*)giflib_private_reallocarray(NULL,
+                                       CopyFrom->ExtensionBlockCount,
+                                     sizeof(ExtensionBlock));
+                 if (sp->ExtensionBlocks == NULL) {
+diff -ur giflib-5.1.4.orig/lib/gif_lib.h giflib-5.1.4/lib/gif_lib.h
+--- giflib-5.1.4.orig/lib/gif_lib.h    2018-02-28 20:31:02.294682673 +0100
++++ giflib-5.1.4/lib/gif_lib.h 2018-02-28 20:31:43.135716712 +0100
+@@ -244,9 +244,6 @@
+                                      GifPixelType ColorTransIn2[]);
+ extern int GifBitSize(int n);
+ 
+-extern void *
+-reallocarray(void *optr, size_t nmemb, size_t size);
+-
+ 
/******************************************************************************
+  Support for the in-core structures allocation (slurp mode).              
+ 
******************************************************************************/
+diff -ur giflib-5.1.4.orig/lib/gif_lib_private.h 
giflib-5.1.4/lib/gif_lib_private.h
+--- giflib-5.1.4.orig/lib/gif_lib_private.h    2018-02-28 20:31:02.294682673 
+0100
++++ giflib-5.1.4/lib/gif_lib_private.h 2018-02-28 22:38:11.657126423 +0100
+@@ -54,6 +54,9 @@
+     bool gif89;
+ } GifFilePrivateType;
+ 
++extern void *
++giflib_private_reallocarray(void *optr, size_t nmemb, size_t size);
++
+ #endif /* _GIF_LIB_PRIVATE_H */
+ 
+ /* end */
+diff -ur giflib-5.1.4.orig/lib/openbsd-reallocarray.c 
giflib-5.1.4/lib/openbsd-reallocarray.c
+--- giflib-5.1.4.orig/lib/openbsd-reallocarray.c       2018-02-28 
20:31:02.295682659 +0100
++++ giflib-5.1.4/lib/openbsd-reallocarray.c    2018-02-28 22:38:11.656126428 
+0100
+@@ -27,7 +27,7 @@
+ #define MUL_NO_OVERFLOW       ((size_t)1 << (sizeof(size_t) * 4))
+ 
+ void *
+-reallocarray(void *optr, size_t nmemb, size_t size)
++giflib_private_reallocarray(void *optr, size_t nmemb, size_t size)
+ {
+       if ((nmemb >= MUL_NO_OVERFLOW || size >= MUL_NO_OVERFLOW) &&
+           nmemb > 0 && SIZE_MAX / nmemb < size) {



reply via email to

[Prev in Thread] Current Thread [Next in Thread]