glibc/malloc
Arjun Shankar 8e448310d7 Fix integer overflows in internal memalign and malloc functions [BZ #22343]
When posix_memalign is called with an alignment less than MALLOC_ALIGNMENT
and a requested size close to SIZE_MAX, it falls back to malloc code
(because the alignment of a block returned by malloc is sufficient to
satisfy the call).  In this case, an integer overflow in _int_malloc leads
to posix_memalign incorrectly returning successfully.

Upon fixing this and writing a somewhat thorough regression test, it was
discovered that when posix_memalign is called with an alignment larger than
MALLOC_ALIGNMENT (so it uses _int_memalign instead) and a requested size
close to SIZE_MAX, a different integer overflow in _int_memalign leads to
posix_memalign incorrectly returning successfully.

Both integer overflows affect other memory allocation functions that use
_int_malloc (one affected malloc in x86) or _int_memalign as well.

This commit fixes both integer overflows.  In addition to this, it adds a
regression test to guard against false successful allocations by the
following memory allocation functions when called with too-large allocation
sizes and, where relevant, various valid alignments:
malloc, realloc, calloc, reallocarray, memalign, posix_memalign,
aligned_alloc, valloc, and pvalloc.
2018-01-18 17:55:45 +01:00
..
alloc_buffer_alloc_array.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
alloc_buffer_allocate.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
alloc_buffer_copy_bytes.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
alloc_buffer_copy_string.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
alloc_buffer_create_failure.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
arena.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
Depend
dynarray_at_failure.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dynarray_emplace_enlarge.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dynarray_finalize.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dynarray_resize_clear.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dynarray_resize.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dynarray-skeleton.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dynarray.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
hooks.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
Makefile Fix integer overflows in internal memalign and malloc functions [BZ #22343] 2018-01-18 17:55:45 +01:00
malloc-hooks.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
malloc-internal.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
malloc.c Fix integer overflows in internal memalign and malloc functions [BZ #22343] 2018-01-18 17:55:45 +01:00
malloc.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mallocbug.c Reformat malloc to gnu style. 2014-01-02 09:40:10 +01:00
mcheck-init.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mcheck.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mcheck.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
memusage.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
memusage.sh Update copyright dates not handled by scripts/update-copyrights. 2018-01-01 00:41:16 +00:00
memusagestat.c Update copyright dates not handled by scripts/update-copyrights. 2018-01-01 00:41:16 +00:00
morecore.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mtrace.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mtrace.pl Update copyright dates not handled by scripts/update-copyrights. 2018-01-01 00:41:16 +00:00
obstack.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
obstack.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
reallocarray.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
scratch_buffer_grow_preserve.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
scratch_buffer_grow.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
scratch_buffer_set_array_size.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
set-freeres.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
thread-freeres.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-alloc_buffer.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-calloc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-dynarray-at-fail.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-dynarray-fail.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-dynarray-shared.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-dynarray.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-interpose-aux-nothread.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-interpose-aux-thread.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-interpose-aux.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-interpose-aux.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-interpose-nothread.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-interpose-skeleton.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-interpose-static-nothread.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-interpose-static-thread.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-interpose-thread.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-malloc_info.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-malloc-backtrace.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-malloc-fork-deadlock.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-malloc-tcache-leak.c Increase some test timeouts. 2018-01-04 21:58:40 +00:00
tst-malloc-thread-exit.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-malloc-thread-fail.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-malloc-too-large.c Fix integer overflows in internal memalign and malloc functions [BZ #22343] 2018-01-18 17:55:45 +01:00
tst-malloc-usable-static-tunables.c Initialize tunable list with the GLIBC_TUNABLES environment variable 2016-12-31 23:49:24 +05:30
tst-malloc-usable-static.c Add framework for tunables 2016-12-31 23:49:24 +05:30
tst-malloc-usable-tunables.c Initialize tunable list with the GLIBC_TUNABLES environment variable 2016-12-31 23:49:24 +05:30
tst-malloc-usable.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-malloc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-mallocfork2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-mallocfork.c Prefer https for Sourceware links 2017-11-16 11:49:26 +05:30
tst-mallocstate.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-mallopt.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-mcheck.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-memalign.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-mtrace.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-mtrace.sh Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-obstack.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-posix_memalign.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-pvalloc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-realloc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-reallocarray.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-scratch_buffer.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-trim1.c * malloc/tst-trim1.c: New file. 2007-12-16 22:57:57 +00:00
tst-valloc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
Versions Implement allocation buffers for internal use 2017-06-21 22:43:57 +02:00