From 344014dd4126727fa3f3f409a9e4a6ccc6a5e28b Mon Sep 17 00:00:00 2001 From: Maks Naumov Date: Mon, 7 Jun 2021 14:13:42 +0300 Subject: [PATCH] pppd: Fix vslprintf %ld for negative values (#279) 'val' is unsigned so condition 'val < 0' is always false fix it by adding signed long variable. Signed-off-by: Maks Naumov --- pppd/utils.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pppd/utils.c b/pppd/utils.c index 7228279..f81c8cf 100644 --- a/pppd/utils.c +++ b/pppd/utils.c @@ -137,6 +137,7 @@ vslprintf(char *buf, int buflen, char *fmt, va_list args) int c, i, n; int width, prec, fillch; int base, len, neg, quoted; + long lval = 0; unsigned long val = 0; char *str, *f, *buf0; unsigned char *p; @@ -202,11 +203,12 @@ vslprintf(char *buf, int buflen, char *fmt, va_list args) c = *fmt++; switch (c) { case 'd': - val = va_arg(args, long); - if (val < 0) { + lval = va_arg(args, long); + if (lval < 0) { neg = 1; - val = -val; - } + val = -lval; + } else + val = lval; base = 10; break; case 'u': -- 2.39.2