Fix potential segfault in the replacement vasprintf() function.
authorGuus Sliepen <guus@tinc-vpn.org>
Tue, 31 Jan 2017 11:03:27 +0000 (12:03 +0100)
committerGuus Sliepen <guus@tinc-vpn.org>
Tue, 31 Jan 2017 11:03:27 +0000 (12:03 +0100)
src/dropin.c

index c7b558a..a4f7a65 100644 (file)
@@ -106,14 +106,13 @@ int vasprintf(char **buf, const char *fmt, va_list ap) {
 
        va_copy(aq, ap);
        status = vsnprintf(*buf, len, fmt, aq);
-       buf[len - 1] = 0;
        va_end(aq);
 
        if(status >= 0)
                *buf = xrealloc(*buf, status + 1);
 
        if(status > len - 1) {
-               len = status;
+               len = status + 1;
                va_copy(aq, ap);
                status = vsnprintf(*buf, len, fmt, aq);
                va_end(aq);