]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
DynASM/x86: Fix potential REL_A overflow.
authorMike Pall <mike>
Wed, 20 Sep 2017 17:39:50 +0000 (19:39 +0200)
committerMike Pall <mike>
Wed, 20 Sep 2017 17:39:50 +0000 (19:39 +0200)
Thanks to Joshua Haberman.

dynasm/dasm_x86.h

index 90dc5d159539b9559effea2af8e10ff18fade8fc..f9260b0c6e9acb4778a2394770a05edf34b16444 100644 (file)
@@ -395,7 +395,8 @@ int dasm_encode(Dst_DECL, void *buffer)
        case DASM_VREG: { int t = *p++; if (t >= 2) n<<=3; cp[-1] |= n; break; }
        case DASM_REL_LG: p++; if (n >= 0) goto rel_pc;
          b++; n = (int)(ptrdiff_t)D->globals[-n];
-       case DASM_REL_A: rel_a: n -= (int)(ptrdiff_t)(cp+4); goto wd; /* !x64 */
+       case DASM_REL_A: rel_a:
+         n -= (unsigned int)(ptrdiff_t)(cp+4); goto wd; /* !x64 */
        case DASM_REL_PC: rel_pc: {
          int shrink = *b++;
          int *pb = DASM_POS2PTR(D, n); if (*pb < 0) { n = pb[1]; goto rel_a; }