X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-terminal%2Fsubterm.c;h=983a2a14abd74bacbb232396597b1a6eff2b2ea0;hb=b6e676ce41508e2aeea22202fc8f234126177f52;hp=7c119ac58aa02eb4e96953bde9c48d5be66af40a;hpb=2bb4c7e384c31de4727f1330da3f4de2f0bb7784;p=elogind.git diff --git a/src/libsystemd-terminal/subterm.c b/src/libsystemd-terminal/subterm.c index 7c119ac58..983a2a14a 100644 --- a/src/libsystemd-terminal/subterm.c +++ b/src/libsystemd-terminal/subterm.c @@ -26,7 +26,6 @@ * parent TTY. Think of this like what "GNU-screen" does. */ -#include #include #include #include @@ -161,16 +160,14 @@ static int output_write(Output *o, const void *buf, size_t size) { _printf_(3,0) static int output_vnprintf(Output *o, size_t max, const char *format, va_list args) { - char buf[4096]; + char buf[max]; int r; assert_return(o, -EINVAL); assert_return(format, -EINVAL); - assert_return(max <= sizeof(buf), -EINVAL); + assert_return(max <= 4096, -EINVAL); - r = vsnprintf(buf, max, format, args); - if (r > (ssize_t)max) - r = max; + r = MIN(vsnprintf(buf, max, format, args), (int) max); return output_write(o, buf, r); }