fixes for jmptbl

This commit is contained in:
Dima Turchenkov 2015-12-14 20:37:32 +03:00 committed by pancake
parent ca26ad47da
commit 061c0acbab

View File

@ -649,17 +649,19 @@ repeat:
RAnalRef *last_ref = fcn->refs->tail->data;
last_ref->type = R_ANAL_REF_TYPE_NULL;
}
if (op.ptr != UT64_MAX) { // direct jump
ret = try_walkthrough_jmptbl (anal, fcn, depth, addr + idx, op.ptr, ret);
} else { // indirect jump: table pointer is unknown
if (op.src[0]->reg) {
if (op.src[0] && op.src[0]->reg) {
ut64 ptr = search_reg_val(anal, buf, idx, addr, op.src[0]->reg->name);
if (ptr && ptr != UT64_MAX)
ret = try_walkthrough_jmptbl (anal, fcn, depth, addr + idx, ptr, ret);
}
}
} else {
}
if (!anal->opt.eobjmp) {
if (continue_after_jump) {
#if 0
@ -670,7 +672,6 @@ repeat:
break;
}
}
}
/* fallthru */
case R_ANAL_OP_TYPE_RET:
VERBOSE_ANAL eprintf ("RET 0x%08"PFMT64x". %d %d %d\n",