Fix undefined behavior when disassembling ud0 x86 instructions (#1032)
* fix undefined behavior due to uninitialized memory
* fix bad calloc call
diff --git a/MCInst.c b/MCInst.c
index d521845..cc062d0 100644
--- a/MCInst.c
+++ b/MCInst.c
@@ -16,6 +16,7 @@
void MCInst_Init(MCInst *inst)
{
+ inst->Opcode = 0;
inst->OpcodePub = 0;
inst->size = 0;
inst->has_imm = false;
diff --git a/utils.c b/utils.c
index ca2a7ec..461b00a 100644
--- a/utils.c
+++ b/utils.c
@@ -17,7 +17,7 @@
unsigned short max_id = insns[size - 1].id;
unsigned short i;
- unsigned short *cache = (unsigned short *)cs_mem_malloc(sizeof(*cache) * (max_id + 1));
+ unsigned short *cache = (unsigned short *)cs_mem_calloc(max_id + 1, sizeof(*cache));
for (i = 1; i < size; i++)
cache[insns[i].id] = i;