From 98b485d83bc038ae152c14d2b86fd9a33f436332 Mon Sep 17 00:00:00 2001 From: Stephen Heumann Date: Wed, 3 Jun 2015 20:38:31 -0500 Subject: [PATCH] vasprintf: Pass a 1-character buffer to initial vsnprintf call. GNO vsnprintf will give an error if size is 0, leading vasprintf to fail. This prevented sending data in telnetd. --- libtelnet/vasprintf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libtelnet/vasprintf.c b/libtelnet/vasprintf.c index 87e22cc..c272f09 100644 --- a/libtelnet/vasprintf.c +++ b/libtelnet/vasprintf.c @@ -44,9 +44,10 @@ vasprintf(char **strp, const char *fmt, va_list ap) { va_list aq; int ret; + char c; va_copy(aq, ap); - ret = vsnprintf(NULL, 0, fmt, ap); + ret = vsnprintf(&c, 1, fmt, ap); /* va_end(ap); -- Don't do this on ORCA/C; it messes up the stack */ if ((*strp = malloc(ret + 1)) == NULL) return (-1);