From: Mark Wielaard Date: Thu, 16 Apr 2020 13:41:57 +0000 (+0200) Subject: libcpu: Replace assert with goto invalid_op for bad prefix. X-Git-Tag: elfutils-0.180~25 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=25d40a626d36c140c8bb309f410f25af2836ec9b;p=thirdparty%2Felfutils.git libcpu: Replace assert with goto invalid_op for bad prefix. https://sourceware.org/bugzilla/show_bug.cgi?id=25831 Signed-off-by: Mark Wielaard --- diff --git a/libcpu/ChangeLog b/libcpu/ChangeLog index 707965140..a8b2b951e 100644 --- a/libcpu/ChangeLog +++ b/libcpu/ChangeLog @@ -1,3 +1,8 @@ +2020-04-16 Mark Wielaard + + * i386_disasm.c (i386_disasm): Replace assert with goto invalid_op + for bad prefix. + 2019-12-11 Omar Sandoval * Makefile.am (i386_lex_CFLAGS): Add -Wno-implicit-fallthrough. diff --git a/libcpu/i386_disasm.c b/libcpu/i386_disasm.c index 4422ffa27..32df8cd0c 100644 --- a/libcpu/i386_disasm.c +++ b/libcpu/i386_disasm.c @@ -407,7 +407,8 @@ i386_disasm (Ebl *ebl __attribute__((unused)), ++curr; - assert (last_prefix_bit != 0); + if (last_prefix_bit == 0) + goto invalid_op; correct_prefix = last_prefix_bit; } @@ -445,8 +446,8 @@ i386_disasm (Ebl *ebl __attribute__((unused)), the input data. */ goto do_ret; - assert (correct_prefix == 0 - || (prefixes & correct_prefix) != 0); + if (correct_prefix != 0 && (prefixes & correct_prefix) == 0) + goto invalid_op; prefixes ^= correct_prefix; if (0) @@ -473,7 +474,8 @@ i386_disasm (Ebl *ebl __attribute__((unused)), if (data == end) { - assert (prefixes != 0); + if (prefixes == 0) + goto invalid_op; goto print_prefix; } @@ -1125,6 +1127,7 @@ i386_disasm (Ebl *ebl __attribute__((unused)), } /* Invalid (or at least unhandled) opcode. */ + invalid_op: if (prefixes != 0) goto print_prefix; /* Make sure we get past the unrecognized opcode if we haven't yet. */