PR26415 UBSAN: vms-misc.c:636 left shift cannot be represented

Alan Modra amodra@gmail.com
Wed Aug 26 13:45:05 GMT 2020


An unsigned short value is promoted to int, thus triggering UB on a
left shift of a positive value that results in a negative int.

	PR 26415
	* vms-misc.c (vms_time_t_to_vms_time): Don't use unsigned short vars.

diff --git a/bfd/vms-misc.c b/bfd/vms-misc.c
index d040c79de1..0826456ef0 100644
--- a/bfd/vms-misc.c
+++ b/bfd/vms-misc.c
@@ -592,8 +592,8 @@ vms_time_to_time_t (unsigned int hi, unsigned int lo)
 void
 vms_time_t_to_vms_time (time_t ut, unsigned int *hi, unsigned int *lo)
 {
-  unsigned short val[4];
-  unsigned short tmp[4];
+  unsigned int val[4];
+  unsigned int tmp[4];
   unsigned int carry;
   int i;
 

-- 
Alan Modra
Australia Development Lab, IBM


More information about the Binutils mailing list