diff options
author | Richard Earnshaw <rearnsha@arm.com> | 2018-10-30 11:33:24 +0000 |
---|---|---|
committer | Richard Earnshaw <rearnsha@gcc.gnu.org> | 2018-10-30 11:33:24 +0000 |
commit | 29f6f2d244c77dd7ae5a86b3bf7cb18fd953168f (patch) | |
tree | 1ee9b9016dfa2e295a56d7818b86352f608cf646 | |
parent | 22e4f1fb6cda89074fa82ba70dfd757fb9ead5f0 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/alloc-pool.h | 1 |
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*)) |