summaryrefslogtreecommitdiffstats
path: root/openbsd-compat/bsd-asprintf.c
diff options
context:
space:
mode:
authordes <des@FreeBSD.org>2008-07-23 09:15:38 +0000
committerdes <des@FreeBSD.org>2008-07-23 09:15:38 +0000
commit367fd865463ff70d9176231cb7590e6e69b51b06 (patch)
tree31274ced9514914f9504202c6e49c93d509e710d /openbsd-compat/bsd-asprintf.c
parente3cfeae816c1b89dbdb19357e2256b4b252fbf05 (diff)
downloadFreeBSD-src-367fd865463ff70d9176231cb7590e6e69b51b06.zip
FreeBSD-src-367fd865463ff70d9176231cb7590e6e69b51b06.tar.gz
Vendor import of OpenSSH 4.6p1 for posterity's sake
Diffstat (limited to 'openbsd-compat/bsd-asprintf.c')
-rw-r--r--openbsd-compat/bsd-asprintf.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/openbsd-compat/bsd-asprintf.c b/openbsd-compat/bsd-asprintf.c
index 6748013..00fa0df 100644
--- a/openbsd-compat/bsd-asprintf.c
+++ b/openbsd-compat/bsd-asprintf.c
@@ -39,7 +39,8 @@
#define INIT_SZ 128
-int vasprintf(char **str, const char *fmt, va_list ap)
+int
+vasprintf(char **str, const char *fmt, va_list ap)
{
int ret = -1;
va_list ap2;
@@ -53,7 +54,7 @@ int vasprintf(char **str, const char *fmt, va_list ap)
ret = vsnprintf(string, INIT_SZ, fmt, ap2);
if (ret >= 0 && ret < INIT_SZ) { /* succeeded with initial alloc */
*str = string;
- } else if (ret == INT_MAX) { /* shouldn't happen */
+ } else if (ret == INT_MAX || ret < 0) { /* Bad length */
goto fail;
} else { /* bigger than initial, realloc allowing for nul */
len = (size_t)ret + 1;
OpenPOWER on IntegriCloud