diff options
Diffstat (limited to 'lib/libc/stdio/vasprintf.c')
-rw-r--r-- | lib/libc/stdio/vasprintf.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/libc/stdio/vasprintf.c b/lib/libc/stdio/vasprintf.c index 5aaaadf677b..174d8f4f4c1 100644 --- a/lib/libc/stdio/vasprintf.c +++ b/lib/libc/stdio/vasprintf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vasprintf.c,v 1.21 2017/03/16 14:32:02 millert Exp $ */ +/* $OpenBSD: vasprintf.c,v 1.22 2017/03/17 14:53:08 deraadt Exp $ */ /* * Copyright (c) 1997 Todd C. Miller <Todd.Miller@courtesan.com> @@ -46,7 +46,9 @@ vasprintf(char **str, const char *fmt, __va_list ap) *f._p = '\0'; if (ret + 1 > INITIAL_SIZE && ret + 1 < pgsz / 2) { /* midsize allocations can try to conserve memory */ - unsigned char *_base = realloc(f._bf._base, ret + 1); + unsigned char *_base = recallocarray(f._bf._base, + f._bf._size + 1, ret + 1, 1); + if (_base == NULL) goto err; *str = (char *)_base; |