]> mj.ucw.cz Git - pciutils.git/commitdiff
libpci: physmem-posix: Fix OFF_MAX definition
authorPali Rohár <pali@kernel.org>
Sat, 20 Jan 2024 11:30:08 +0000 (12:30 +0100)
committerMartin Mares <mj@ucw.cz>
Sun, 18 Feb 2024 15:18:43 +0000 (16:18 +0100)
Expression ((1 << n) - 1) for n=31 has undefined behavior and gcc 11
already evaluates it to zero.

Fix definition of OFF_MAX to prevent signed integer overflow.

lib/physmem-posix.c

index 664ec48c96fd87b4079cc62932e7aea69ec4d68e..7cd7e999aae8d97b6ceb7d68cd40e6f02f881df9 100644 (file)
@@ -26,7 +26,7 @@
 #include <unistd.h>
 
 #ifndef OFF_MAX
-#define OFF_MAX (off_t)((1ULL << (sizeof(off_t) * CHAR_BIT - 1)) - 1)
+#define OFF_MAX ((((off_t)1 << (sizeof(off_t) * CHAR_BIT - 2)) - 1) * 2 + 1)
 #endif
 
 struct physmem {