]> git.ozlabs.org Git - ppp.git/commitdiff
pppd: Fix vslprintf %ld for negative values (#279)
authorMaks Naumov <maksqwe1@ukr.net>
Mon, 7 Jun 2021 11:13:42 +0000 (14:13 +0300)
committerGitHub <noreply@github.com>
Mon, 7 Jun 2021 11:13:42 +0000 (21:13 +1000)
'val' is unsigned so condition 'val < 0' is always false
fix it by adding signed long variable.

Signed-off-by: Maks Naumov <maksqwe1@ukr.net>
pppd/utils.c

index 7228279ec000517a07bb15a6342141a77423203d..f81c8cf7a118470d9bac799561d31af6b740836c 100644 (file)
@@ -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':