]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Lib: Fix print of 64-bit router id
authorOndrej Zajicek (work) <santiago@crfreenet.org>
Thu, 18 Jul 2019 00:05:36 +0000 (02:05 +0200)
committerOndrej Zajicek (work) <santiago@crfreenet.org>
Thu, 18 Jul 2019 00:05:36 +0000 (02:05 +0200)
Mismatched types to printf(). The old code coincidentally worked on amd64
due to its calling conventions.

Thanks to Maximilian Eschenbacher for the bugreport.

lib/printf.c

index 48b86a5feb992296ce8874f67dcbfcfe839be99d..be6a120ea1a6f048862d2628f3cd928366cd35af 100644 (file)
@@ -314,14 +314,14 @@ int bvsnprintf(char *buf, int size, const char *fmt, va_list args)
                        if(qualifier == 'l') {
                                X = va_arg(args, u64);
                                bsprintf(ipbuf, "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x",
-                                       ((X >> 56) & 0xff),
-                                       ((X >> 48) & 0xff),
-                                       ((X >> 40) & 0xff),
-                                       ((X >> 32) & 0xff),
-                                       ((X >> 24) & 0xff),
-                                       ((X >> 16) & 0xff),
-                                       ((X >> 8) & 0xff),
-                                       (X & 0xff));
+                                        (uint) ((X >> 56) & 0xff),
+                                        (uint) ((X >> 48) & 0xff),
+                                        (uint) ((X >> 40) & 0xff),
+                                        (uint) ((X >> 32) & 0xff),
+                                        (uint) ((X >> 24) & 0xff),
+                                        (uint) ((X >> 16) & 0xff),
+                                        (uint) ((X >> 8) & 0xff),
+                                        (uint) (X & 0xff));
                        }
                        else
                        {