From 909c6131ae56edd352cc47964be8b64c3a308013 Mon Sep 17 00:00:00 2001
From: Tobias Stoeckmann <tobias@cvs.openbsd.org>
Date: Fri, 17 Jan 2014 20:51:55 +0000
Subject: Fix off-by-one on specially crafted /etc/shells file.

ok gilles@, millert@
---
 lib/libc/gen/getusershell.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'lib/libc')

diff --git a/lib/libc/gen/getusershell.c b/lib/libc/gen/getusershell.c
index a46fd02571f..36af0ee2639 100644
--- a/lib/libc/gen/getusershell.c
+++ b/lib/libc/gen/getusershell.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: getusershell.c,v 1.11 2013/11/24 23:51:29 deraadt Exp $ */
+/*	$OpenBSD: getusershell.c,v 1.12 2014/01/17 20:51:54 tobias Exp $ */
 /*
  * Copyright (c) 1985, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -109,7 +109,7 @@ initshells(void)
 		(void)fclose(fp);
 		return (okshells);
 	}
-	shells = calloc((size_t)(statb.st_size / 3), sizeof (char *));
+	shells = calloc((size_t)(statb.st_size / 3 + 1), sizeof (char *));
 	if (shells == NULL) {
 		(void)fclose(fp);
 		free(strings);
-- 
cgit v1.2.3