guix-commits
[Top][All Lists]
Advanced

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

01/01: gnu: unzip: Reorganize security fixes for improved clarity.


From: Mark H. Weaver
Subject: 01/01: gnu: unzip: Reorganize security fixes for improved clarity.
Date: Thu, 22 Oct 2015 18:58:12 +0000

mhw pushed a commit to branch master
in repository guix.

commit c46c931ecfe7fd4a5cbd979263d28d3f1e02bcca
Author: Mark H Weaver <address@hidden>
Date:   Thu Oct 22 14:54:43 2015 -0400

    gnu: unzip: Reorganize security fixes for improved clarity.
    
    * gnu/packages/patches/unzip-fix-overflows-and-infloop.patch: Delete
      file.  Its contents are now split into the following new files:
    * gnu/packages/patches/unzip-CVE-2015-7696.patch,
      gnu/packages/patches/unzip-CVE-2015-7697.patch,
      gnu/packages/patches/unzip-overflow-on-invalid-input.patch: New files.
    * gnu-system.am (dist_patch_DATA): Adjust accordingly.
    * gnu/packages/zip.scm (unzip)[source]: Adjust patches accordingly.
---
 gnu-system.am                                      |    4 +-
 gnu/packages/patches/unzip-CVE-2015-7696.patch     |   35 +++++++
 gnu/packages/patches/unzip-CVE-2015-7697.patch     |   28 +++++
 .../patches/unzip-fix-overflows-and-infloop.patch  |  108 --------------------
 .../patches/unzip-overflow-on-invalid-input.patch  |   40 +++++++
 gnu/packages/zip.scm                               |    4 +-
 6 files changed, 109 insertions(+), 110 deletions(-)

diff --git a/gnu-system.am b/gnu-system.am
index e62fe18..c481066 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -647,9 +647,11 @@ dist_patch_DATA =                                          
\
   gnu/packages/patches/unzip-CVE-2014-8140.patch               \
   gnu/packages/patches/unzip-CVE-2014-8141.patch               \
   gnu/packages/patches/unzip-CVE-2014-9636.patch               \
+  gnu/packages/patches/unzip-CVE-2015-7696.patch               \
+  gnu/packages/patches/unzip-CVE-2015-7697.patch               \
   gnu/packages/patches/unzip-allow-greater-hostver-values.patch        \
   gnu/packages/patches/unzip-attribs-overflow.patch            \
-  gnu/packages/patches/unzip-fix-overflows-and-infloop.patch   \
+  gnu/packages/patches/unzip-overflow-on-invalid-input.patch   \
   gnu/packages/patches/unzip-format-secure.patch               \
   gnu/packages/patches/unzip-initialize-symlink-flag.patch     \
   gnu/packages/patches/unzip-overflow-long-fsize.patch         \
diff --git a/gnu/packages/patches/unzip-CVE-2015-7696.patch 
b/gnu/packages/patches/unzip-CVE-2015-7696.patch
new file mode 100644
index 0000000..d6a4072
--- /dev/null
+++ b/gnu/packages/patches/unzip-CVE-2015-7696.patch
@@ -0,0 +1,35 @@
+Copied from Debian.
+
+From: Petr Stodulka <address@hidden>
+Date: Mon, 14 Sep 2015 18:23:17 +0200
+Subject: Upstream fix for heap overflow
+Bug-Debian: https://bugs.debian.org/802162
+Bug-RedHat: https://bugzilla.redhat.com/show_bug.cgi?id=1260944
+Origin: https://bugzilla.redhat.com/attachment.cgi?id=1073002
+Forwarded: yes
+
+---
+ crypt.c | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+--- a/crypt.c
++++ b/crypt.c
+@@ -465,7 +465,17 @@
+     GLOBAL(pInfo->encrypted) = FALSE;
+     defer_leftover_input(__G);
+     for (n = 0; n < RAND_HEAD_LEN; n++) {
+-        b = NEXTBYTE;
++        /* 2012-11-23 SMS.  (OUSPG report.)
++         * Quit early if compressed size < HEAD_LEN.  The resulting
++         * error message ("unable to get password") could be improved,
++         * but it's better than trying to read nonexistent data, and
++         * then continuing with a negative G.csize.  (See
++         * fileio.c:readbyte()).
++         */
++        if ((b = NEXTBYTE) == (ush)EOF)
++        {
++            return PK_ERR;
++        }
+         h[n] = (uch)b;
+         Trace((stdout, " (%02x)", h[n]));
+     }
diff --git a/gnu/packages/patches/unzip-CVE-2015-7697.patch 
b/gnu/packages/patches/unzip-CVE-2015-7697.patch
new file mode 100644
index 0000000..d688b42
--- /dev/null
+++ b/gnu/packages/patches/unzip-CVE-2015-7697.patch
@@ -0,0 +1,28 @@
+Copied from Debian.
+
+From: Kamil Dudka <address@hidden>
+Date: Mon, 14 Sep 2015 18:24:56 +0200
+Subject: fix infinite loop when extracting empty bzip2 data
+Bug-Debian: https://bugs.debian.org/802160
+Bug-RedHat: https://bugzilla.redhat.com/show_bug.cgi?id=1260944
+Origin: other, https://bugzilla.redhat.com/attachment.cgi?id=1073339
+
+---
+ extract.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/extract.c
++++ b/extract.c
+@@ -2728,6 +2728,12 @@
+     int repeated_buf_err;
+     bz_stream bstrm;
+ 
++    if (G.incnt <= 0 && G.csize <= 0L) {
++        /* avoid an infinite loop */
++        Trace((stderr, "UZbunzip2() got empty input\n"));
++        return 2;
++    }
++
+ #if (defined(DLL) && !defined(NO_SLIDE_REDIR))
+     if (G.redirect_slide)
+         wsize = G.redirect_size, redirSlide = G.redirect_buffer;
diff --git a/gnu/packages/patches/unzip-fix-overflows-and-infloop.patch 
b/gnu/packages/patches/unzip-fix-overflows-and-infloop.patch
deleted file mode 100644
index 33498db..0000000
--- a/gnu/packages/patches/unzip-fix-overflows-and-infloop.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-Copied from Fedora.
-
-http://pkgs.fedoraproject.org/cgit/unzip.git/tree/unzip-6.0-heap-overflow-infloop.patch?id=d18f821e
-
-From bdd4a0cecd745cb4825e4508b5bdf2579731086a Mon Sep 17 00:00:00 2001
-From: Petr Stodulka <address@hidden>
-Date: Mon, 14 Sep 2015 18:23:17 +0200
-Subject: [PATCH 1/3] upstream fix for heap overflow
-
-https://bugzilla.redhat.com/attachment.cgi?id=1073002
----
- crypt.c | 12 +++++++++++-
- 1 file changed, 11 insertions(+), 1 deletion(-)
-
-diff --git a/crypt.c b/crypt.c
-index 784e411..a8975f2 100644
---- a/crypt.c
-+++ b/crypt.c
-@@ -465,7 +465,17 @@ int decrypt(__G__ passwrd)
-     GLOBAL(pInfo->encrypted) = FALSE;
-     defer_leftover_input(__G);
-     for (n = 0; n < RAND_HEAD_LEN; n++) {
--        b = NEXTBYTE;
-+        /* 2012-11-23 SMS.  (OUSPG report.)
-+         * Quit early if compressed size < HEAD_LEN.  The resulting
-+         * error message ("unable to get password") could be improved,
-+         * but it's better than trying to read nonexistent data, and
-+         * then continuing with a negative G.csize.  (See
-+         * fileio.c:readbyte()).
-+         */
-+        if ((b = NEXTBYTE) == (ush)EOF)
-+        {
-+            return PK_ERR;
-+        }
-         h[n] = (uch)b;
-         Trace((stdout, " (%02x)", h[n]));
-     }
--- 
-2.4.6
-
-
-From 4b48844661ff9569f2ecf582a387d46a5775b5d8 Mon Sep 17 00:00:00 2001
-From: Kamil Dudka <address@hidden>
-Date: Mon, 14 Sep 2015 18:24:56 +0200
-Subject: [PATCH 2/3] fix infinite loop when extracting empty bzip2 data
-
-Bug: https://sourceforge.net/p/infozip/patches/23/
----
- extract.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/extract.c b/extract.c
-index 7134bfe..29db027 100644
---- a/extract.c
-+++ b/extract.c
-@@ -2733,6 +2733,12 @@ __GDEF
-     int repeated_buf_err;
-     bz_stream bstrm;
- 
-+    if (G.incnt <= 0 && G.csize <= 0L) {
-+        /* avoid an infinite loop */
-+        Trace((stderr, "UZbunzip2() got empty input\n"));
-+        return 2;
-+    }
-+
- #if (defined(DLL) && !defined(NO_SLIDE_REDIR))
-     if (G.redirect_slide)
-         wsize = G.redirect_size, redirSlide = G.redirect_buffer;
--- 
-2.4.6
-
-
-From bd150334fb4084f5555a6be26b015a0671cb5b74 Mon Sep 17 00:00:00 2001
-From: Kamil Dudka <address@hidden>
-Date: Tue, 22 Sep 2015 18:52:23 +0200
-Subject: [PATCH 3/3] extract: prevent unsigned overflow on invalid input
-
-Suggested-by: Stefan Cornelius
----
- extract.c | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/extract.c b/extract.c
-index 29db027..b9ae667 100644
---- a/extract.c
-+++ b/extract.c
-@@ -1257,8 +1257,17 @@ static int extract_or_test_entrylist(__G__ numchunk,
-         if (G.lrec.compression_method == STORED) {
-             zusz_t csiz_decrypted = G.lrec.csize;
- 
--            if (G.pInfo->encrypted)
-+            if (G.pInfo->encrypted) {
-+                if (csiz_decrypted <= 12) {
-+                    /* handle the error now to prevent unsigned overflow */
-+                    Info(slide, 0x401, ((char *)slide,
-+                      LoadFarStringSmall(ErrUnzipNoFile),
-+                      LoadFarString(InvalidComprData),
-+                      LoadFarStringSmall2(Inflate)));
-+                    return PK_ERR;
-+                }
-                 csiz_decrypted -= 12;
-+            }
-             if (G.lrec.ucsize != csiz_decrypted) {
-                 Info(slide, 0x401, ((char *)slide,
-                   LoadFarStringSmall2(WrnStorUCSizCSizDiff),
--- 
-2.5.2
-
diff --git a/gnu/packages/patches/unzip-overflow-on-invalid-input.patch 
b/gnu/packages/patches/unzip-overflow-on-invalid-input.patch
new file mode 100644
index 0000000..013002a
--- /dev/null
+++ b/gnu/packages/patches/unzip-overflow-on-invalid-input.patch
@@ -0,0 +1,40 @@
+Extracted from a patch in Fedora.
+
+http://pkgs.fedoraproject.org/cgit/unzip.git/tree/unzip-6.0-heap-overflow-infloop.patch?id=d18f821e
+
+From bd150334fb4084f5555a6be26b015a0671cb5b74 Mon Sep 17 00:00:00 2001
+From: Kamil Dudka <address@hidden>
+Date: Tue, 22 Sep 2015 18:52:23 +0200
+Subject: [PATCH 3/3] extract: prevent unsigned overflow on invalid input
+
+Suggested-by: Stefan Cornelius
+---
+ extract.c | 11 ++++++++++-
+ 1 file changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/extract.c b/extract.c
+index 29db027..b9ae667 100644
+--- a/extract.c
++++ b/extract.c
+@@ -1257,8 +1257,17 @@ static int extract_or_test_entrylist(__G__ numchunk,
+         if (G.lrec.compression_method == STORED) {
+             zusz_t csiz_decrypted = G.lrec.csize;
+ 
+-            if (G.pInfo->encrypted)
++            if (G.pInfo->encrypted) {
++                if (csiz_decrypted <= 12) {
++                    /* handle the error now to prevent unsigned overflow */
++                    Info(slide, 0x401, ((char *)slide,
++                      LoadFarStringSmall(ErrUnzipNoFile),
++                      LoadFarString(InvalidComprData),
++                      LoadFarStringSmall2(Inflate)));
++                    return PK_ERR;
++                }
+                 csiz_decrypted -= 12;
++            }
+             if (G.lrec.ucsize != csiz_decrypted) {
+                 Info(slide, 0x401, ((char *)slide,
+                   LoadFarStringSmall2(WrnStorUCSizCSizDiff),
+-- 
+2.5.2
+
diff --git a/gnu/packages/zip.scm b/gnu/packages/zip.scm
index 83c4527..b7bed0e 100644
--- a/gnu/packages/zip.scm
+++ b/gnu/packages/zip.scm
@@ -85,11 +85,13 @@ Compression ratios of 2:1 to 3:1 are common for text 
files.")
                                    "unzip-CVE-2014-8140.patch"
                                    "unzip-CVE-2014-8141.patch"
                                    "unzip-CVE-2014-9636.patch"
+                                   "unzip-CVE-2015-7696.patch"
+                                   "unzip-CVE-2015-7697.patch"
                                    "unzip-allow-greater-hostver-values.patch"
                                    "unzip-initialize-symlink-flag.patch"
                                    "unzip-remove-build-date.patch"
                                    "unzip-attribs-overflow.patch"
-                                   "unzip-fix-overflows-and-infloop.patch"
+                                   "unzip-overflow-on-invalid-input.patch"
                                    "unzip-format-secure.patch"
                                    "unzip-overflow-long-fsize.patch")))))
     (build-system gnu-build-system)



reply via email to

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