lib: fix vty_out with >1024 bytes of output

Consuming va_args modifies its internal bits, hence the need to copy
it... but the copying wasn't quite right just yet.

Fixes: 4d5f445 ("lib: add vty_outln()")
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
David Lamparter 2017-07-06 16:55:33 +02:00
parent ca03eeeec7
commit ecf3d1b9d5

View File

@ -107,7 +107,7 @@ vty_out_variadic (struct vty *vty, const char *format, va_list args)
{ {
/* Try to write to initial buffer. */ /* Try to write to initial buffer. */
va_copy (cp, args); va_copy (cp, args);
len = vsnprintf (buf, sizeof(buf), format, args); len = vsnprintf (buf, sizeof(buf), format, cp);
va_end (cp); va_end (cp);
/* Initial buffer is not enough. */ /* Initial buffer is not enough. */
@ -124,7 +124,9 @@ vty_out_variadic (struct vty *vty, const char *format, va_list args)
if (! p) if (! p)
return -1; return -1;
len = vsnprintf (p, size, format, args); va_copy (cp, args);
len = vsnprintf (p, size, format, cp);
va_end (cp);
if (len > -1 && len < size) if (len > -1 && len < size)
break; break;