]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Fix calculation of space remaining in buffer when printing the contents of a DST__K_R...
authorNick Clifton <nickc@redhat.com>
Tue, 25 Jun 2024 10:56:38 +0000 (11:56 +0100)
committerNick Clifton <nickc@redhat.com>
Tue, 25 Jun 2024 10:56:38 +0000 (11:56 +0100)
  PR 31873

bfd/vms-alpha.c

index 337523015dc53522aa53e57dee824e410ca36608..a53ccdf4eb99f5411ae576c38074e08a84589074 100644 (file)
@@ -7721,16 +7721,19 @@ evax_bfd_print_dst (struct bfd *abfd, unsigned int dst_size, FILE *file)
        case DST__K_RECBEG:
          {
            struct vms_dst_recbeg *recbeg = (void *)buf;
-           unsigned char *name = buf + sizeof (*recbeg);
 
            if (len > sizeof (*recbeg))
              {
+               unsigned char *name = buf + sizeof (*recbeg);
                int nlen = len - sizeof (*recbeg) - 1;
+
                if (name[0] < nlen)
                  nlen = name[0];
                fprintf (file, _("recbeg: name: %.*s\n"), nlen, name + 1);
+
                evax_bfd_print_valspec (buf, len, 4, file);
-               len -= 1 + nlen;
+
+               len -= 1 + nlen + sizeof (*recbeg);
                if (len >= 4)
                  fprintf (file, _("    len: %u bits\n"),
                           (unsigned) bfd_getl32 (name + 1 + nlen));