This avoids overflow in the allocation size computations in
sbitmap_vector_alloc when the result exceeds 2GB.

Bootstrapped / tested on x86_64-unknown-linux-gnu, pushed.

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

        * sbitmap.c (sbitmap_vector_alloc): Use size_t for byte
        quantities to avoid overflow.
---
 gcc/sbitmap.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gcc/sbitmap.c b/gcc/sbitmap.c
index 292e7eede5a..3a43fe35bb1 100644
--- a/gcc/sbitmap.c
+++ b/gcc/sbitmap.c
@@ -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);
-- 
2.26.2

Reply via email to