From: David Lamparter Date: Fri, 26 Mar 2021 13:27:51 +0000 (+0100) Subject: lib: save errno in vty_out() X-Git-Tag: base_8.0~195^2~1 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=2c12c904ea34b96098f2390f97921ba89b40cb19;p=matthieu%2Ffrr.git lib: save errno in vty_out() ... so `%m` works correctly, without us trampling over `errno` before we get to formatting it. Signed-off-by: David Lamparter --- diff --git a/lib/vty.c b/lib/vty.c index d44cc904c5..96cfef1c0a 100644 --- a/lib/vty.c +++ b/lib/vty.c @@ -159,6 +159,8 @@ int vty_out(struct vty *vty, const char *format, ...) char buf[1024]; char *p = NULL; char *filtered; + /* format string may contain %m, keep errno intact for printfrr */ + int saved_errno = errno; if (vty->frame_pos) { vty->frame_pos = 0; @@ -166,6 +168,7 @@ int vty_out(struct vty *vty, const char *format, ...) } va_start(args, format); + errno = saved_errno; p = vasnprintfrr(MTYPE_VTY_OUT_BUF, buf, sizeof(buf), format, args); va_end(args);