]> andersk Git - openssh.git/blobdiff - openbsd-compat/bsd-asprintf.c
- (djm) [bsd-asprintf.c] Better test for bad vsnprintf lengths; ok dtucker@
[openssh.git] / openbsd-compat / bsd-asprintf.c
index 67480139ebdf42747c67eeeeac3f40d807f76645..00fa0dfd8a7da3bad6684929d0f2550582bc3137 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,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;
This page took 0.097402 seconds and 4 git commands to generate.