aboutsummaryrefslogtreecommitdiffstats
path: root/archivers
diff options
context:
space:
mode:
authormakc <makc@FreeBSD.org>2015-03-29 00:48:15 +0800
committermakc <makc@FreeBSD.org>2015-03-29 00:48:15 +0800
commitb8a725039932aa8d2dc2f97ffb5bfca0a43bf917 (patch)
tree4ac9950d07835c9ec0050853c49e32861246133d /archivers
parentf3c4a64e2dc248023bc35dd617e652649e3059e1 (diff)
downloadfreebsd-ports-gnome-b8a725039932aa8d2dc2f97ffb5bfca0a43bf917.tar.gz
freebsd-ports-gnome-b8a725039932aa8d2dc2f97ffb5bfca0a43bf917.tar.zst
freebsd-ports-gnome-b8a725039932aa8d2dc2f97ffb5bfca0a43bf917.zip
archivers/libzip:
- Add patch to fix CVE-2015-2331: ZIP Integer Overflow [1] - Add CPE PR: 198913 [1] Reported by: Sevan Janiyan
Diffstat (limited to 'archivers')
-rw-r--r--archivers/libzip/Makefile6
-rw-r--r--archivers/libzip/files/patch-lib_zip__dirent.c14
2 files changed, 18 insertions, 2 deletions
diff --git a/archivers/libzip/Makefile b/archivers/libzip/Makefile
index f63ba7def99c..e0f092292e3a 100644
--- a/archivers/libzip/Makefile
+++ b/archivers/libzip/Makefile
@@ -3,16 +3,18 @@
PORTNAME= libzip
PORTVERSION= 0.11.2
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= archivers devel
MASTER_SITES= http://www.nih.at/libzip/
MAINTAINER= makc@FreeBSD.org
COMMENT= C library for reading, creating, and modifying ZIP archives
+CPE_VENDOR= nih
+
GNU_CONFIGURE= yes
MAKE_ENV= LC_ALL="C"
-USES= libtool pathfix tar:xz
+USES= cpe libtool pathfix tar:xz
USE_LDCONFIG= yes
INSTALL_TARGET= install-strip
diff --git a/archivers/libzip/files/patch-lib_zip__dirent.c b/archivers/libzip/files/patch-lib_zip__dirent.c
new file mode 100644
index 000000000000..3e67d83b475f
--- /dev/null
+++ b/archivers/libzip/files/patch-lib_zip__dirent.c
@@ -0,0 +1,14 @@
+CVE-2015-2331: ZIP Integer Overflow
+Upstream commit: http://hg.nih.at/libzip/rev/9f11d54f692e
+
+--- lib/zip_dirent.c.orig 2013-11-28 16:57:10 UTC
++++ lib/zip_dirent.c
+@@ -110,7 +110,7 @@ _zip_cdir_new(zip_uint64_t nentry, struc
+
+ if (nentry == 0)
+ cd->entry = NULL;
+- else if ((cd->entry=(struct zip_entry *)malloc(sizeof(*(cd->entry))*(size_t)nentry)) == NULL) {
++ else if ((nentry > SIZE_MAX/sizeof(*(cd->entry))) || (cd->entry=(struct zip_entry *)malloc(sizeof(*(cd->entry))*(size_t)nentry)) == NULL) {
+ _zip_error_set(error, ZIP_ER_MEMORY, 0);
+ free(cd);
+ return NULL;