aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2018-10-30 11:33:24 +0000
committerRichard Earnshaw <rearnsha@gcc.gnu.org>2018-10-30 11:33:24 +0000
commit29f6f2d244c77dd7ae5a86b3bf7cb18fd953168f (patch)
tree1ee9b9016dfa2e295a56d7818b86352f608cf646
parent22e4f1fb6cda89074fa82ba70dfd757fb9ead5f0 (diff)
downloadgcc-29f6f2d244c77dd7ae5a86b3bf7cb18fd953168f.zip
gcc-29f6f2d244c77dd7ae5a86b3bf7cb18fd953168f.tar.gz
gcc-29f6f2d244c77dd7ae5a86b3bf7cb18fd953168f.tar.bz2
Don't allow the pool allocator to be configured to allocate zero-sized objects
PR bootstrap/87747 would have been significantly easier to track down if the pool allocator had faulted an attempt to configure it to allocate zero-sized objects. Instead, this slipped through and we later hit memory corruption when the assumed size turned out to be different to the configured size. While, theoretically, there might be a use case for this, it seems unlikely to me that GCC would have such a use. So this patch adds a checking assert that the object size is not zero. * alloc-pool.h (base_pool_allocator <TBlockAllocator>::initialize): Assert that the allocation size is not zero. From-SVN: r265620
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/alloc-pool.h1
2 files changed, 6 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index da7b998..c07d3ad 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2018-10-30 Richard Earnshaw <rearnsha@arm.com>
+
+ * alloc-pool.h (base_pool_allocator <TBlockAllocator>::initialize):
+ Assert that the allocation size is not zero.
+
2018-10-30 Richard Biener <rguenther@suse.de>
PR tree-optimization/87800
diff --git a/gcc/alloc-pool.h b/gcc/alloc-pool.h
index c0a1292..d2ee000 100644
--- a/gcc/alloc-pool.h
+++ b/gcc/alloc-pool.h
@@ -256,6 +256,7 @@ base_pool_allocator <TBlockAllocator>::initialize ()
size_t size = m_size;
gcc_checking_assert (m_name);
+ gcc_checking_assert (m_size);
/* Make size large enough to store the list header. */
if (size < sizeof (allocation_pool_list*))