Fri Dec 29 17:55:13 2017 UTC ()
pkg_select: fix buffer overflow

expanding the macro with ++len for size meant our memset to zero was
one bigger than the above allocated size.

while here simplify the problematic macro - malloc+memset zero is calloc.

bump pkgrevision


(maya)
diff -r1.25 -r1.26 pkgsrc/pkgtools/pkg_select/Makefile
diff -r1.11 -r1.12 pkgsrc/pkgtools/pkg_select/distinfo
diff -r0 -r1.1 pkgsrc/pkgtools/pkg_select/patches/patch-file.c
diff -r0 -r1.1 pkgsrc/pkgtools/pkg_select/patches/patch-tools.h

cvs diff -r1.25 -r1.26 pkgsrc/pkgtools/pkg_select/Makefile (expand / switch to unified diff)

--- pkgsrc/pkgtools/pkg_select/Makefile 2017/12/29 11:59:13 1.25
+++ pkgsrc/pkgtools/pkg_select/Makefile 2017/12/29 17:55:13 1.26
@@ -1,18 +1,18 @@ @@ -1,18 +1,18 @@
1# $NetBSD: Makefile,v 1.25 2017/12/29 11:59:13 plunky Exp $ 1# $NetBSD: Makefile,v 1.26 2017/12/29 17:55:13 maya Exp $
2# 2#
3 3
4DISTNAME= pkg_select-20090308 4DISTNAME= pkg_select-20090308
5PKGREVISION= 7 5PKGREVISION= 8
6CATEGORIES= pkgtools 6CATEGORIES= pkgtools
7MASTER_SITES= ftp://ftp.NetBSD.org/pub/NetBSD/misc/imil/ 7MASTER_SITES= ftp://ftp.NetBSD.org/pub/NetBSD/misc/imil/
8 8
9MAINTAINER= imil@gcu.info 9MAINTAINER= imil@gcu.info
10COMMENT= Curses based pkgsrc system browser / manager 10COMMENT= Curses based pkgsrc system browser / manager
11LICENSE= original-bsd 11LICENSE= original-bsd
12 12
13USE_FEATURES= cdefs 13USE_FEATURES= cdefs
14 14
15INSTALLATION_DIRS= bin ${PKGMANDIR}/man1 15INSTALLATION_DIRS= bin ${PKGMANDIR}/man1
16INSTALLATION_DIRS+= ${EXAMPLEDIR} share/pkg_select 16INSTALLATION_DIRS+= ${EXAMPLEDIR} share/pkg_select
17 17
18EXAMPLEDIR= ${PREFIX}/share/examples/${PKGBASE} 18EXAMPLEDIR= ${PREFIX}/share/examples/${PKGBASE}

cvs diff -r1.11 -r1.12 pkgsrc/pkgtools/pkg_select/distinfo (expand / switch to unified diff)

--- pkgsrc/pkgtools/pkg_select/distinfo 2017/12/29 11:59:13 1.11
+++ pkgsrc/pkgtools/pkg_select/distinfo 2017/12/29 17:55:13 1.12
@@ -1,14 +1,16 @@ @@ -1,14 +1,16 @@
1$NetBSD: distinfo,v 1.11 2017/12/29 11:59:13 plunky Exp $ 1$NetBSD: distinfo,v 1.12 2017/12/29 17:55:13 maya Exp $
2 2
3SHA1 (pkg_select-20090308.tar.gz) = f4a4f40927631d16ee563671ce98e69843382c93 3SHA1 (pkg_select-20090308.tar.gz) = f4a4f40927631d16ee563671ce98e69843382c93
4RMD160 (pkg_select-20090308.tar.gz) = d265f8e18ee4500e2ac34ba2d105acff28cc7e91 4RMD160 (pkg_select-20090308.tar.gz) = d265f8e18ee4500e2ac34ba2d105acff28cc7e91
5SHA512 (pkg_select-20090308.tar.gz) = 77ebda4cb6032d980682b7c4c9745982cd49d1683476fa8e16e345385651150576b252c0a4c1a6318e263c11ebc13bffa04393687db914011dfafe52d651125c 5SHA512 (pkg_select-20090308.tar.gz) = 77ebda4cb6032d980682b7c4c9745982cd49d1683476fa8e16e345385651150576b252c0a4c1a6318e263c11ebc13bffa04393687db914011dfafe52d651125c
6Size (pkg_select-20090308.tar.gz) = 54637 bytes 6Size (pkg_select-20090308.tar.gz) = 54637 bytes
7SHA1 (patch-curses__helpers.c) = fa30914f4a9b147c433fcb32249d2b773a5e2604 7SHA1 (patch-curses__helpers.c) = fa30914f4a9b147c433fcb32249d2b773a5e2604
8SHA1 (patch-extern.h) = e1248f7180a76ec8f623719037cf5306b8de573b 8SHA1 (patch-extern.h) = e1248f7180a76ec8f623719037cf5306b8de573b
 9SHA1 (patch-file.c) = ad32f135386b8c4be140305ccade97f6220f168d
9SHA1 (patch-install__many.c) = 24a39faaab697a84103311f0fc28c2670e201bbe 10SHA1 (patch-install__many.c) = 24a39faaab697a84103311f0fc28c2670e201bbe
10SHA1 (patch-listmgt.c) = d27477fd0ce46a9c8ad6a86818dd9f018557459a 11SHA1 (patch-listmgt.c) = d27477fd0ce46a9c8ad6a86818dd9f018557459a
11SHA1 (patch-live.c) = b821986e8da22cd53b6c95975cd36abafbeda453 12SHA1 (patch-live.c) = b821986e8da22cd53b6c95975cd36abafbeda453
12SHA1 (patch-more.c) = 0a8c4440a085edfae7f8f4832cdbb7878e3bf85b 13SHA1 (patch-more.c) = 0a8c4440a085edfae7f8f4832cdbb7878e3bf85b
13SHA1 (patch-pkg__info.c) = d6c1f93461c91cfe44a9659d7197406c9c47d890 14SHA1 (patch-pkg__info.c) = d6c1f93461c91cfe44a9659d7197406c9c47d890
14SHA1 (patch-pkgsrc.c) = df0b6c9633e75bc784ec34e88ec4201426d66464 15SHA1 (patch-pkgsrc.c) = df0b6c9633e75bc784ec34e88ec4201426d66464
 16SHA1 (patch-tools.h) = add83ba82a5aa96c0805348e767bc0fffc2f9e0b

File Added: pkgsrc/pkgtools/pkg_select/patches/patch-file.c
$NetBSD: patch-file.c,v 1.1 2017/12/29 17:55:13 maya Exp $

Avoid buffer overflow from magical side effecting macro expansion

--- file.c.orig	2009-03-08 14:25:53.000000000 +0000
+++ file.c
@@ -156,7 +156,9 @@ loadfile(const char *path)
 	if (len == 0)
 		return(NULL);
 
-	XMALLOC(lfile, ++len * sizeof(char *));
+	++len;
+
+	XMALLOC(lfile, len * sizeof(char *));
 
 	for (i = 0; i < len; i++)
 		lfile[i] = NULL;

File Added: pkgsrc/pkgtools/pkg_select/patches/patch-tools.h
$NetBSD: patch-tools.h,v 1.1 2017/12/29 17:55:13 maya Exp $

malloc+memset to calloc

--- tools.h.orig	2009-03-08 14:25:53.000000000 +0000
+++ tools.h
@@ -74,10 +74,9 @@
 
 #define XMALLOC(elm, size)						\
 	do {								\
-		elm = malloc(size);					\
+		elm = calloc(1, size);					\
 		if (elm == NULL)					\
 			err(1, "can't allocate memory\n");		\
-		memset(elm, 0, size);					\
 	} while (/* CONSTCOND */ 0)
 
 #define XSTRDUP(dest, src)						\