ubsan: undefined shift in mach-o.c
authorAlan Modra <amodra@gmail.com>
Sat, 6 Nov 2021 08:01:38 +0000 (18:31 +1030)
committerAlan Modra <amodra@gmail.com>
Sat, 6 Nov 2021 10:45:49 +0000 (21:15 +1030)
This one was logically wrong too.  If file_ptr was 64 bits, then -1U
is extended to 0x00000000ffffffff, probably not what was intended
here.

* mach-o.c (FILE_ALIGN): Correct expression.

bfd/mach-o.c

index 1f0d47008110a78a74ab86faef11ae696a86791e..d90ea3c28ce7274259b1a2793c41c7a1f8be2170 100644 (file)
@@ -36,7 +36,7 @@
 #define bfd_mach_o_mkobject bfd_mach_o_gen_mkobject
 
 #define FILE_ALIGN(off, algn) \
-  (((off) + ((file_ptr) 1 << (algn)) - 1) & ((file_ptr) -1U << (algn)))
+  (((off) + ((ufile_ptr) 1 << (algn)) - 1) & ((ufile_ptr) -1 << (algn)))
 
 static bool
 bfd_mach_o_read_dyld_content (bfd *abfd, bfd_mach_o_dyld_info_command *cmd);