diff options
author | 2010-10-18 18:22:35 +0000 | |
---|---|---|
committer | 2010-10-18 18:22:35 +0000 | |
commit | ad64522442c40205be2025de1d2d82fe33ca4527 (patch) | |
tree | c2ca8c07aed5efeeb7ffd65361a6331135ecb796 /lib | |
parent | Disable use of dladdr() on a.out arches, they do not provide it (yet); ok djm@ (diff) | |
download | wireguard-openbsd-ad64522442c40205be2025de1d2d82fe33ca4527.tar.xz wireguard-openbsd-ad64522442c40205be2025de1d2d82fe33ca4527.zip |
Fix a potential memory leak in an error path (although in code we don't
currently use), spotted by zinovik.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libcurses/base/safe_sprintf.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/libcurses/base/safe_sprintf.c b/lib/libcurses/base/safe_sprintf.c index 4173a32ee77..0bc79c0c088 100644 --- a/lib/libcurses/base/safe_sprintf.c +++ b/lib/libcurses/base/safe_sprintf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: safe_sprintf.c,v 1.5 2010/01/12 23:22:06 nicm Exp $ */ +/* $OpenBSD: safe_sprintf.c,v 1.6 2010/10/18 18:22:35 nicm Exp $ */ /**************************************************************************** * Copyright (c) 1998-2003,2007 Free Software Foundation, Inc. * @@ -35,7 +35,7 @@ #include <curses.priv.h> #include <ctype.h> -MODULE_ID("$Id: safe_sprintf.c,v 1.5 2010/01/12 23:22:06 nicm Exp $") +MODULE_ID("$Id: safe_sprintf.c,v 1.6 2010/10/18 18:22:35 nicm Exp $") #if USE_SAFE_SPRINTF @@ -57,6 +57,7 @@ _nc_printf_length(const char *fmt, va_list ap) size_t length = BUFSIZ; char *buffer; char *format; + char *tmp_format; int len = 0; size_t fmt_len; char fmt_arg[BUFSIZ]; @@ -113,9 +114,12 @@ _nc_printf_length(const char *fmt, va_list ap) } sprintf(fmt_arg, "%d", ival); fmt_len += strlen(fmt_arg); - if ((format = realloc(format, fmt_len)) == 0) { + if ((tmp_format = realloc(format, fmt_len)) == 0) { + free(buffer); + free(format); return -1; } + format = tmp_format; strcpy(&format[--f], fmt_arg); f = strlen(format); } else if (isalpha(UChar(*fmt))) { |