]> andersk Git - gssapi-openssh.git/blobdiff - openssh/openbsd-compat/bsd-asprintf.c
Import of OpenSSH 4.9p1
[gssapi-openssh.git] / openssh / openbsd-compat / bsd-asprintf.c
index 67480139ebdf42747c67eeeeac3f40d807f76645..3368195d443ae1a8470528ecf0211ccdfba17847 100644 (file)
@@ -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,8 @@ 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 */
+               free(string);
                goto fail;
        } else {        /* bigger than initial, realloc allowing for nul */
                len = (size_t)ret + 1;
This page took 0.035181 seconds and 4 git commands to generate.