From 2c12c904ea34b96098f2390f97921ba89b40cb19 Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Fri, 26 Mar 2021 14:27:51 +0100 Subject: 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 --- lib/vty.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'lib/vty.c') diff --git a/lib/vty.c b/lib/vty.c index d44cc904c..96cfef1c0 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); -- cgit v1.2.3