diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2020-04-22 15:09:49 +0200 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2020-04-22 15:17:50 +0200 |
commit | 25cfa84da6650c149522bb70412aa1c9aa85526e (patch) | |
tree | 73c36c8f347066bb5bc58344b144f8ab02486aa3 | |
parent | 31445ce3c2b77d8c0e3f347f4a8cd14c28f4b237 (diff) | |
download | gcc-25cfa84da6650c149522bb70412aa1c9aa85526e.zip gcc-25cfa84da6650c149522bb70412aa1c9aa85526e.tar.gz gcc-25cfa84da6650c149522bb70412aa1c9aa85526e.tar.bz2 |
Do not overflow when resizing large widest_irange's.
-rw-r--r-- | gcc/value-range.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/value-range.cc b/gcc/value-range.cc index 43a8a5b..cc260f1 100644 --- a/gcc/value-range.cc +++ b/gcc/value-range.cc @@ -281,6 +281,10 @@ widest_irange::resize_if_needed (unsigned nranges) if (m_max_ranges >= nranges) return; + // We're about to double the size. Bail if it won't fit. + if (nranges * 2 > sizeof (m_max_ranges) * 255) + return; + bool must_initialize = m_blob == NULL; m_max_ranges = nranges * 2; unsigned alloc_size = m_max_ranges * sizeof (*m_blob) * 2; |