Skip to content

Commit

Permalink
DynASM/x86: Fix potential REL_A overflow.
Browse files Browse the repository at this point in the history
Thanks to Joshua Haberman.
  • Loading branch information
Mike Pall committed Sep 20, 2017
1 parent f3d7507 commit 0c0e7b1
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion dynasm/dasm_x86.h
Original file line number Diff line number Diff line change
Expand Up @@ -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; }
Expand Down

0 comments on commit 0c0e7b1

Please sign in to comment.