From: Maks Naumov Date: Mon, 7 Jun 2021 11:13:42 +0000 (+0300) Subject: pppd: Fix vslprintf %ld for negative values (#279) X-Git-Tag: ppp-2.5.0~74 X-Git-Url: http://git.ozlabs.org/?a=commitdiff_plain;h=344014dd4126727fa3f3f409a9e4a6ccc6a5e28b;p=ppp.git 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 --- 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':