summaryrefslogtreecommitdiff
path: root/lib/libc
diff options
context:
space:
mode:
authorTobias Stoeckmann <tobias@cvs.openbsd.org>2014-01-17 20:51:55 +0000
committerTobias Stoeckmann <tobias@cvs.openbsd.org>2014-01-17 20:51:55 +0000
commit909c6131ae56edd352cc47964be8b64c3a308013 (patch)
tree360ee89e1bfbbec9909d0b8137fba71e3f0243cc /lib/libc
parentdd1c7a84ae63c19d193601474867e9356e7c2979 (diff)
Fix off-by-one on specially crafted /etc/shells file.
ok gilles@, millert@
Diffstat (limited to 'lib/libc')
-rw-r--r--lib/libc/gen/getusershell.c4
1 files changed, 2 insertions, 2 deletions
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);