middle-end/97554 - avoid overflow in alloc size compute
authorRichard Biener <rguenther@suse.de>
Mon, 26 Oct 2020 09:10:46 +0000 (10:10 +0100)
committerRichard Biener <rguenther@suse.de>
Mon, 26 Oct 2020 10:33:50 +0000 (11:33 +0100)
This avoids overflow in the allocation size computations in
sbitmap_vector_alloc when the result exceeds 2GB.

2020-10-26  Richard Biener  <rguenther@suse.de>

* sbitmap.c (sbitmap_vector_alloc): Use size_t for byte
quantities to avoid overflow.

gcc/sbitmap.c

index 292e7eede5a185a473900b8cd67a31618db437bd..3a43fe35bb1e3386fcf020fbb167b3b42ed946c3 100644 (file)
@@ -139,7 +139,8 @@ sbitmap_realloc (sbitmap src, unsigned int n_elms)
 sbitmap *
 sbitmap_vector_alloc (unsigned int n_vecs, unsigned int n_elms)
 {
-  unsigned int i, bytes, offset, elm_bytes, size, amt, vector_bytes;
+  unsigned int i, size;
+  size_t amt, bytes, vector_bytes, elm_bytes, offset;
   sbitmap *bitmap_vector;
 
   size = SBITMAP_SET_SIZE (n_elms);