aboutsummaryrefslogtreecommitdiff
path: root/payloads/libpayload
diff options
context:
space:
mode:
authorStefan Reinauer <stepan@coresystems.de>2009-07-31 14:45:41 +0000
committerStefan Reinauer <stepan@openbios.org>2009-07-31 14:45:41 +0000
commit8f95edaabd3841c8e5db26d6b372611f70c7b3a6 (patch)
treea639827184573526411f254f542d58584842a071 /payloads/libpayload
parent5fe6e23c61bf1fde7a1a0568b38d32c4e625f0ef (diff)
oops, these two were missed in the last cleanup.
Signed-off-by: Stefan Reinauer <stepan@coresystems.de> Acked-by: Stefan Reinauer <stepan@coresystems.de> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4475 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'payloads/libpayload')
-rw-r--r--payloads/libpayload/libc/malloc.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/payloads/libpayload/libc/malloc.c b/payloads/libpayload/libc/malloc.c
index 4cb71f6ff4..28b0974752 100644
--- a/payloads/libpayload/libc/malloc.c
+++ b/payloads/libpayload/libc/malloc.c
@@ -271,8 +271,14 @@ static struct align_region_t* align_regions = 0;
static struct align_region_t *allocate_region(struct align_region_t *old_first, int alignment, int num_elements)
{
struct align_region_t *new_region = malloc(sizeof(struct align_region_t));
+ if (!new_region)
+ return NULL;
new_region->alignment = alignment;
new_region->start = malloc((num_elements+1) * alignment + num_elements);
+ if (!new_region->start) {
+ free(new_region);
+ return NULL;
+ }
new_region->start_data = (void*)((u32)(new_region->start + num_elements + alignment - 1) & (~(alignment-1)));
new_region->size = num_elements * alignment;
new_region->free = num_elements;