~ruther/guix-local

9c3ad422d0f4f2e552dcb73aae98c7db1fc2e584 — Leo Famulari 8 years ago 5dc0e0b
gnu: libgxps: Fix CVE-2017-11590.

* gnu/packages/patches/libgxps-CVE-2017-11590.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/gnome.scm (libgxps)[source]: Use it.
3 files changed, 50 insertions(+), 0 deletions(-)

M gnu/local.mk
M gnu/packages/gnome.scm
A gnu/packages/patches/libgxps-CVE-2017-11590.patch
M gnu/local.mk => gnu/local.mk +1 -0
@@ 810,6 810,7 @@ dist_patch_DATA =						\
  %D%/packages/patches/libgit2-0.25.1-mtime-0.patch		\
  %D%/packages/patches/libgdata-fix-tests.patch			\
  %D%/packages/patches/libgdata-glib-duplicate-tests.patch	\
  %D%/packages/patches/libgxps-CVE-2017-11590.patch		\
  %D%/packages/patches/libffi-3.2.1-complex-alpha.patch		\
  %D%/packages/patches/libjxr-fix-function-signature.patch	\
  %D%/packages/patches/libjxr-fix-typos.patch			\

M gnu/packages/gnome.scm => gnu/packages/gnome.scm +1 -0
@@ 395,6 395,7 @@ access the common Google services, and has full asynchronous support.")
              (uri (string-append "mirror://gnome/sources/" name "/"
                                  (version-major+minor version) "/"
                                  name "-" version ".tar.xz"))
              (patches (search-patches "libgxps-CVE-2017-11590.patch"))
              (sha256
               (base32
                "184r06s8g20cfigg7m169n42jjsc9wmzzlycr4g1fxxhr72r8x9y"))))

A gnu/packages/patches/libgxps-CVE-2017-11590.patch => gnu/packages/patches/libgxps-CVE-2017-11590.patch +48 -0
@@ 0,0 1,48 @@
Fix CVE-2017-11590:

https://bugzilla.gnome.org/show_bug.cgi?id=785479
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-11590

Patch copied from upstream source repository:

https://git.gnome.org/browse/libgxps/commit/?id=9d5d292055250ed298f3b89dc332d6db4003a031

From 9d5d292055250ed298f3b89dc332d6db4003a031 Mon Sep 17 00:00:00 2001
From: Marek Kasik <mkasik@redhat.com>
Date: Wed, 26 Jul 2017 16:23:37 +0200
Subject: archive: Check for pathname being NULL before dereferencing

Check whether "archive_entry_pathname ()" returns a non-NULL pathname
before using it to avoid a NULL pointer being dereferenced.

https://bugzilla.gnome.org/show_bug.cgi?id=785479
---
 libgxps/gxps-archive.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/libgxps/gxps-archive.c b/libgxps/gxps-archive.c
index acf8d7d..e763773 100644
--- a/libgxps/gxps-archive.c
+++ b/libgxps/gxps-archive.c
@@ -257,6 +257,7 @@ gxps_archive_initable_init (GInitable     *initable,
 	GXPSArchive          *archive;
 	ZipArchive           *zip;
 	struct archive_entry *entry;
+	const gchar          *pathname;
 
 	archive = GXPS_ARCHIVE (initable);
 
@@ -281,7 +282,9 @@ gxps_archive_initable_init (GInitable     *initable,
 
         while (gxps_zip_archive_iter_next (zip, &entry)) {
                 /* FIXME: We can ignore directories here */
-                g_hash_table_add (archive->entries, g_strdup (archive_entry_pathname (entry)));
+                pathname = archive_entry_pathname (entry);
+                if (pathname != NULL)
+                        g_hash_table_add (archive->entries, g_strdup (pathname));
                 archive_read_data_skip (zip->archive);
         }
 
-- 
cgit v0.12