summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPatrick Georgi <patrick@coreboot.org>2024-01-26 19:47:29 +0100
committerPatrick Georgi <patrick@coreboot.org>2024-01-29 19:12:43 +0000
commitc59426f60ddfa85104dff79a5f2c3fabc23f6180 (patch)
tree177bf75e60ddde0a977f8232b9483fad0c12cee4 /tests
parent80c79a5dc31cca9f157cd2f35f435dfa7648ce11 (diff)
downloadcoreboot-c59426f60ddfa85104dff79a5f2c3fabc23f6180.tar.gz
coreboot-c59426f60ddfa85104dff79a5f2c3fabc23f6180.tar.bz2
coreboot-c59426f60ddfa85104dff79a5f2c3fabc23f6180.zip
malloc/memalign: Return NULL if the request is too large
It's what this function family is defined to do, we currently don't usually run into the case (see: not too many die() instances going around), it's more useful to try to recover, and the JPEG parser can run into it if the work buffer size exceeds the remaining heap, whereas its sole user (the bootsplash code) knows what to do when seeing a NULL. Use xmalloc() if you want an allocation that either works or dies. tl;dr: That code path isn't usually taken. Right now it crashes. With this patch it _might_ survive. There is a use-case for doing it like that now. Change-Id: I262fbad7daae0ca3aab583fda00665a2592deaa8 Signed-off-by: Patrick Georgi <patrick@coreboot.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/80226 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Martin L Roth <gaumless@gmail.com> Reviewed-by: Eric Lai <ericllai@google.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/lib/malloc-test.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/tests/lib/malloc-test.c b/tests/lib/malloc-test.c
index 452d74f88879..f5d528e1c4f5 100644
--- a/tests/lib/malloc-test.c
+++ b/tests/lib/malloc-test.c
@@ -34,11 +34,6 @@ TEST_REGION(test_heap, TEST_HEAP_SZ);
TEST_SYMBOL(_heap, _test_heap);
TEST_SYMBOL(_eheap, _etest_heap);
-void die(const char *msg, ...)
-{
- function_called();
-}
-
static int setup_test(void **state)
{
free_mem_ptr = &_heap;
@@ -56,9 +51,8 @@ static int setup_calloc_test(void **state)
static void test_malloc_out_of_memory(void **state)
{
- /* Expect die() call if out of memory */
- expect_function_call(die);
- cb_malloc(TEST_HEAP_SZ);
+ void *ptr = cb_malloc(TEST_HEAP_SZ);
+ assert_ptr_equal(ptr, NULL);
}
static void test_malloc_zero(void **state)
@@ -102,8 +96,8 @@ static void test_memalign_different_alignments(void **state)
static void test_memalign_out_of_memory(void **state)
{
- expect_function_call(die);
- cb_memalign(16, TEST_HEAP_SZ);
+ void *ptr = cb_memalign(16, TEST_HEAP_SZ);
+ assert_ptr_equal(ptr, NULL);
}
static void test_memalign_zero(void **state)