metag uninitialized memory read
authorAlan Modra <amodra@gmail.com>
Fri, 20 Mar 2020 00:25:58 +0000 (10:55 +1030)
committerAlan Modra <amodra@gmail.com>
Fri, 20 Mar 2020 02:05:51 +0000 (12:35 +1030)
* metag-dis.c (print_insn_metag): Don't ignore status from
read_memory_func.

opcodes/ChangeLog
opcodes/metag-dis.c

index 2d6af2b5a0c59ece1789262e9e8937e1355e6f15..5f9229652fc88ad673d58b7e2686e0efe9f3e3f0 100644 (file)
@@ -1,3 +1,8 @@
+2020-03-20  Alan Modra  <amodra@gmail.com>
+
+       * metag-dis.c (print_insn_metag): Don't ignore status from
+       read_memory_func.
+
 2020-03-20  Alan Modra  <amodra@gmail.com>
 
        * nds32-dis.c (print_insn_nds32): Remove unnecessary casts.
index f01dcbaef1de0f004e107936f718562a471ddf81..b1cf6331b5dc583f76a2d821543911d54ddf2c26 100644 (file)
@@ -3364,9 +3364,15 @@ print_insn_metag (bfd_vma pc, disassemble_info *outf)
   bfd_byte buf[4];
   unsigned int insn_word;
   size_t i;
-  outf->bytes_per_chunk = 4;
+  int status;
 
-  (*outf->read_memory_func) (pc & ~0x03, buf, 4, outf);
+  outf->bytes_per_chunk = 4;
+  status = (*outf->read_memory_func) (pc & ~0x03, buf, 4, outf);
+  if (status)
+    {
+      (*outf->memory_error_func) (status, pc, outf);
+      return -1;
+    }
   insn_word = bfd_getl32 (buf);
 
   for (i = 0; i < sizeof(metag_optab)/sizeof(metag_optab[0]); i++)