[binutils-gdb] ubsan: undefined shift in frag_align_code

Alan Modra amodra@sourceware.org
Thu Jun 2 09:06:03 GMT 2022


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e0ad09cfa5f0672ee917de2c56a27427e6908220

commit e0ad09cfa5f0672ee917de2c56a27427e6908220
Author: Alan Modra <amodra@gmail.com>
Date:   Thu Jun 2 16:10:30 2022 +0930

    ubsan: undefined shift in frag_align_code
    
            * frags.c (MAX_MEM_FOR_RS_ALIGN_CODE): Avoid signed integer
            overflow.

Diff:
---
 gas/frags.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gas/frags.c b/gas/frags.c
index f5afe1a49b5..8e88496f37c 100644
--- a/gas/frags.c
+++ b/gas/frags.c
@@ -367,7 +367,7 @@ frag_align_pattern (int alignment, const char *fill_pattern,
 # ifndef HANDLE_ALIGN
 #  define MAX_MEM_FOR_RS_ALIGN_CODE  1
 # else
-#  define MAX_MEM_FOR_RS_ALIGN_CODE  ((1 << alignment) - 1)
+#  define MAX_MEM_FOR_RS_ALIGN_CODE  (((size_t) 1 << alignment) - 1)
 # endif
 #endif


More information about the Binutils-cvs mailing list