Fix unintialized memory in aarch64 opcodes.

This patch fixes an issue where the memory for the opcode structure is not zero'd before
the first exit branch. So there is one failure mode for which uninitialized memory
is returned.

This causes weird failures when the return code is not checked before inst is used.

opcodes/

	* aarch64-dis.c (aarch64_opcode_decode): Moved memory clear code.
This commit is contained in:
Tamar Christina 2018-05-01 17:11:11 +01:00
parent 8e4bd9922a
commit b3ac5c6c28
2 changed files with 7 additions and 3 deletions

View File

@ -1,3 +1,7 @@
2018-05-01 Tamar Christina <tamar.christina@arm.com>
* aarch64-dis.c (aarch64_opcode_decode): Moved memory clear code.
2018-04-30 Francois H. Theron <francois.theron@netronome.com>
Makefile.am: Added nfp-dis.c.

View File

@ -2733,6 +2733,9 @@ aarch64_opcode_decode (const aarch64_opcode *opcode, const aarch64_insn code,
assert (opcode && inst);
/* Clear inst. */
memset (inst, '\0', sizeof (aarch64_inst));
/* Check the base opcode. */
if ((code & opcode->mask) != (opcode->opcode & opcode->mask))
{
@ -2740,9 +2743,6 @@ aarch64_opcode_decode (const aarch64_opcode *opcode, const aarch64_insn code,
goto decode_fail;
}
/* Clear inst. */
memset (inst, '\0', sizeof (aarch64_inst));
inst->opcode = opcode;
inst->value = code;