diff options
author | des <des@FreeBSD.org> | 2008-07-23 09:15:38 +0000 |
---|---|---|
committer | des <des@FreeBSD.org> | 2008-07-23 09:15:38 +0000 |
commit | 367fd865463ff70d9176231cb7590e6e69b51b06 (patch) | |
tree | 31274ced9514914f9504202c6e49c93d509e710d /openbsd-compat/bsd-asprintf.c | |
parent | e3cfeae816c1b89dbdb19357e2256b4b252fbf05 (diff) | |
download | FreeBSD-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.c | 5 |
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; |