aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-08-26 11:26:35 +0930
committerAlan Modra <amodra@gmail.com>2020-08-26 23:23:44 +0930
commitb4e125d9351f84233698bef91530743547c87403 (patch)
tree39a188813d5970328dcd00d0a141833bba0a4a0d
parenta68aba2da76e802faf2ea887a9d8ff16d3d5959f (diff)
downloadbinutils-b4e125d9351f84233698bef91530743547c87403.zip
binutils-b4e125d9351f84233698bef91530743547c87403.tar.gz
binutils-b4e125d9351f84233698bef91530743547c87403.tar.bz2
PR26415 UBSAN: vms-misc.c:636 left shift cannot be represented
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.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/vms-misc.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 616b22f..fe440e8 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2020-08-26 Alan Modra <amodra@gmail.com>
+
+ PR 26415
+ * vms-misc.c (vms_time_t_to_vms_time): Don't use unsigned short vars.
+
2020-08-26 David Faust <david.faust@oracle.com>
* archures.c (bfd_mach_xbpf): Define.
diff --git a/bfd/vms-misc.c b/bfd/vms-misc.c
index d040c79..0826456 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;