diff options
author | Tobias Stoeckmann <tobias@cvs.openbsd.org> | 2014-01-19 21:01:07 +0000 |
---|---|---|
committer | Tobias Stoeckmann <tobias@cvs.openbsd.org> | 2014-01-19 21:01:07 +0000 |
commit | 864ac13b88272d5d8b9416e568e9c8b2be2c9294 (patch) | |
tree | 80d6d54d3e37769a750462706c0e4cdaf6083ee5 /lib | |
parent | 3bf42cbb669cade45a226dc5e601cb74cb8a5a34 (diff) |
Fix one more off-by-one (making it an off-by-two):
1. integer division can give an off-by-one (like 2/3 = 0 for calloc)
2. ending the shells array with NULL takes space, too
ok millert@
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libc/gen/getusershell.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/libc/gen/getusershell.c b/lib/libc/gen/getusershell.c index 36af0ee2639..56ad2093b72 100644 --- a/lib/libc/gen/getusershell.c +++ b/lib/libc/gen/getusershell.c @@ -1,4 +1,4 @@ -/* $OpenBSD: getusershell.c,v 1.12 2014/01/17 20:51:54 tobias Exp $ */ +/* $OpenBSD: getusershell.c,v 1.13 2014/01/19 21:01:06 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 + 1), sizeof (char *)); + shells = calloc((size_t)(statb.st_size / 3 + 2), sizeof (char *)); if (shells == NULL) { (void)fclose(fp); free(strings); |