gdb: fix vfork with multiple threads
[deliverable/binutils-gdb.git] / opcodes / tic30-dis.c
index 67d3f24bdc839149a8a0a20b34bc0d701b6a06b0..a78a0dad218c61d269b9cb9a57c49b1460f9f080 100644 (file)
@@ -201,7 +201,7 @@ get_register_operand (unsigned char fragment, char *buffer)
     {
       if ((fragment & 0x1F) == current_reg->opcode)
        {
-         strncpy (buffer, current_reg->name, OPERAND_BUFFER_LEN);
+         strncpy (buffer, current_reg->name, OPERAND_BUFFER_LEN - 1);
          buffer[OPERAND_BUFFER_LEN - 1] = 0;
          return 1;
        }
@@ -695,6 +695,9 @@ print_insn_tic30 (bfd_vma pc, disassemble_info *info)
   struct instruction insn = { 0, NULL, NULL };
   bfd_vma bufaddr = pc - info->buffer_vma;
 
+  if (bufaddr + 3 >= info->buffer_length)
+    return -1;
+
   /* Obtain the current instruction word from the buffer.  */
   insn_word = (((unsigned) *(info->buffer + bufaddr) << 24)
               | (*(info->buffer + bufaddr + 1) << 16)
This page took 0.041483 seconds and 4 git commands to generate.