aboutsummaryrefslogtreecommitdiff
path: root/bfd/vms-misc.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-10-25 22:21:45 +1030
committerAlan Modra <amodra@gmail.com>2020-10-25 22:25:45 +1030
commit0c70050a4bb65c6159dc7d65c1fba253c97837c8 (patch)
tree3969801891593d686e063402df43a645b19ed5c7 /bfd/vms-misc.c
parent46907955397b771b313ea0e1f38ec0f49c8fabf9 (diff)
downloadfsf-binutils-gdb-0c70050a4bb65c6159dc7d65c1fba253c97837c8.zip
fsf-binutils-gdb-0c70050a4bb65c6159dc7d65c1fba253c97837c8.tar.gz
fsf-binutils-gdb-0c70050a4bb65c6159dc7d65c1fba253c97837c8.tar.bz2
asan: alpha-vms: buffer overflow
* vms-misc.c (_bfd_vms_save_counted_string): Count length byte towards maxlen.
Diffstat (limited to 'bfd/vms-misc.c')
-rw-r--r--bfd/vms-misc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/bfd/vms-misc.c b/bfd/vms-misc.c
index 0826456..70dd003 100644
--- a/bfd/vms-misc.c
+++ b/bfd/vms-misc.c
@@ -163,9 +163,12 @@ _bfd_vms_save_sized_string (bfd *abfd, unsigned char *str, size_t size)
char *
_bfd_vms_save_counted_string (bfd *abfd, unsigned char *ptr, size_t maxlen)
{
- unsigned int len = *ptr++;
+ unsigned int len;
- if (len > maxlen)
+ if (maxlen == 0)
+ return NULL;
+ len = *ptr++;
+ if (len > maxlen - 1)
return NULL;
return _bfd_vms_save_sized_string (abfd, ptr, len);
}