asan: alpha-vms: buffer overflow

Alan Modra amodra@gmail.com
Sun Oct 25 11:56:56 GMT 2020


	* vms-misc.c (_bfd_vms_save_counted_string): Count length byte
	towards maxlen.

diff --git a/bfd/vms-misc.c b/bfd/vms-misc.c
index 0826456ef0..70dd0030d5 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);
 }

-- 
Alan Modra
Australia Development Lab, IBM


More information about the Binutils mailing list