avoid shifting into the signed bit of integers
authorMichael Gilbert <mgilbert@debian.org>
Wed, 12 Oct 2022 00:18:28 +0000 (01:18 +0100)
committerMichael Gilbert <mgilbert@debian.org>
Wed, 12 Oct 2022 00:18:28 +0000 (01:18 +0100)
Gbp-Pq: Topic armhf
Gbp-Pq: Name shift-overflow.patch

programs/winedbg/be_arm.c

index a9551a40337b8b86bb3d61046a38c0877ff156c1..c6312e75684ae04cd17de7b25f801e32abad85dc 100644 (file)
@@ -706,12 +706,12 @@ static UINT thumb2_disasm_branch(UINT inst, ADDRESS64 *addr)
     if (C)
     {
         offset |= I1 << 19 | I2 << 18 | (inst & 0x003f0000) >> 4;
-        if (S) offset |= 0x0fff << 20;
+        if (S) offset |= 0xfff00000;
     }
     else
     {
         offset |= I1 << 23 | I2 << 22 | (inst & 0x03ff0000) >> 4;
-        if (S) offset |= 0xff << 24;
+        if (S) offset |= 0xff000000;
     }
 
     dbg_printf("\n\tb%s%s\t", L ? "l" : "", C ? tbl_cond[(inst >> 22) & 0x0f] : "");