~ruther/guix-local

1ac675a5831e39968be3c137a4ff448c9f65f48e — Efraim Flashner 9 years ago b352b57
gnu: p7zip: Fix CVE-2016-9256.

* gnu/packages/compression.scm (p7zip)[source]: Add patch.
* gnu/packages/patches/p7zip-CVE-2016-9296.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
3 files changed, 27 insertions(+), 1 deletions(-)

M gnu/local.mk
M gnu/packages/compression.scm
A gnu/packages/patches/p7zip-CVE-2016-9296.patch
M gnu/local.mk => gnu/local.mk +1 -0
@@ 797,6 797,7 @@ dist_patch_DATA =						\
  %D%/packages/patches/openssl-c-rehash-in.patch		\
  %D%/packages/patches/orpheus-cast-errors-and-includes.patch	\
  %D%/packages/patches/ots-no-include-missing-file.patch	\
  %D%/packages/patches/p7zip-CVE-2016-9296.patch			\
  %D%/packages/patches/p7zip-remove-unused-code.patch		\
  %D%/packages/patches/patchelf-page-size.patch			\
  %D%/packages/patches/patchelf-rework-for-arm.patch		\

M gnu/packages/compression.scm => gnu/packages/compression.scm +2 -1
@@ 924,7 924,8 @@ for most inputs, but the resulting compressed files are anywhere from 20% to
                  (delete-file-recursively "CPP/7zip/Archive/Rar")
                  (delete-file-recursively "CPP/7zip/Compress/Rar")
                  #t))
              (patches (search-patches "p7zip-remove-unused-code.patch"))))
              (patches (search-patches "p7zip-CVE-2016-9296.patch"
                                       "p7zip-remove-unused-code.patch"))))
    (build-system gnu-build-system)
    (arguments
     `(#:make-flags

A gnu/packages/patches/p7zip-CVE-2016-9296.patch => gnu/packages/patches/p7zip-CVE-2016-9296.patch +24 -0
@@ 0,0 1,24 @@
From: Robert Luberda <robert@debian.org>
Date: Sat, 19 Nov 2016 08:48:08 +0100
Subject: Fix nullptr dereference (CVE-2016-9296)

Patch taken from https://sourceforge.net/p/p7zip/bugs/185/
This patch file taken from Debian's patch set for p7zip
---
 CPP/7zip/Archive/7z/7zIn.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/CPP/7zip/Archive/7z/7zIn.cpp b/CPP/7zip/Archive/7z/7zIn.cpp
index b0c6b98..7c6dde2 100644
--- a/CPP/7zip/Archive/7z/7zIn.cpp
+++ b/CPP/7zip/Archive/7z/7zIn.cpp
@@ -1097,7 +1097,8 @@ HRESULT CInArchive::ReadAndDecodePackedStreams(
       if (CrcCalc(data, unpackSize) != folders.FolderCRCs.Vals[i])
         ThrowIncorrect();
   }
-  HeadersSize += folders.PackPositions[folders.NumPackStreams];
+  if (folders.PackPositions)
+      HeadersSize += folders.PackPositions[folders.NumPackStreams];
   return S_OK;
 }