changeset 1345:696a029d09e9

Decode JMP or JSR with an invalid addressing mode as an invalid instruction
author Michael Pavone <pavone@retrodev.com>
date Fri, 05 May 2017 23:41:14 -0700
parents 6372de4da179
children f7ca42e020fd
files 68kinst.c
diffstat 1 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/68kinst.c	Fri May 05 22:08:30 2017 -0700
+++ b/68kinst.c	Fri May 05 23:41:14 2017 -0700
@@ -904,7 +904,11 @@
 							}
 							decoded->extra.size = OPSIZE_UNSIZED;
 							istream = m68k_decode_op(istream, OPSIZE_UNSIZED, &(decoded->src));
-							if (!istream) {
+							if (
+								!istream 
+								|| (decoded->src.addr_mode < MODE_AREG_DISPLACE && decoded->src.addr_mode != MODE_AREG_INDIRECT)
+								|| decoded->src.addr_mode == MODE_IMMEDIATE
+							) {
 								decoded->op = M68K_INVALID;
 								break;
 							}