From 57920c9aa4b442736146c5d121616c9d6754be08 Mon Sep 17 00:00:00 2001 From: Sparchatus Date: Thu, 28 Apr 2022 13:36:53 +0000 Subject: [PATCH 1/2] Check for malloc failure --- lib/aos/aos_urpc.c | 2 ++ usr/init/main.c | 1 + 2 files changed, 3 insertions(+) diff --git a/lib/aos/aos_urpc.c b/lib/aos/aos_urpc.c index b597051..fd6979e 100644 --- a/lib/aos/aos_urpc.c +++ b/lib/aos/aos_urpc.c @@ -151,6 +151,8 @@ errval_t aos_urpc_get_bootinfo(struct aos_urpc * rpc, struct bootinfo_serialized } *ret = malloc(ret_len); + if (*ret == NULL) return LIB_ERR_MALLOC_FAIL; + memcpy(*ret, rpc->shared_mem, ret_len); return SYS_ERR_OK; } diff --git a/usr/init/main.c b/usr/init/main.c index 8651e46..6a87e16 100644 --- a/usr/init/main.c +++ b/usr/init/main.c @@ -176,6 +176,7 @@ static errval_t deserialize_bootinfo(struct bootinfo_serialized * serialized, st // err = paging_map_frame(get_current_paging_state(), (void **) ret, bootinfo_size, ret_frame); // if (err_is_fail(err)) return err_push(err, LIB_ERR_PMAP_MAP); *ret = malloc(bootinfo_size); + if(*ret == NULL) return LIB_ERR_MALLOC_FAIL; (*ret)->host_msg = serialized->host_msg; (*ret)->host_msg_bits = serialized->host_msg_bits; From 7b1ffe2f948d1ad608eef31a546e9c143db5ba19 Mon Sep 17 00:00:00 2001 From: Sparchatus Date: Thu, 28 Apr 2022 13:38:07 +0000 Subject: [PATCH 2/2] Move early testing so mm alloc is available --- usr/init/main.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/usr/init/main.c b/usr/init/main.c index 6a87e16..85d62ea 100644 --- a/usr/init/main.c +++ b/usr/init/main.c @@ -227,11 +227,6 @@ app_main(int argc, char *argv[]) { // TODO: initialize mem allocator, vspace management here - // Grading - grading_test_early(); - - // TODO: Spawn system processes etc. here - struct aos_urpc_frame *urpc = (void*)MON_URPC_VBASE; urpc_to_bsp.shared_mem = &urpc->shared_mem_to_bsp; @@ -245,6 +240,11 @@ app_main(int argc, char *argv[]) { thread_create(urpc_server, &urpc_to_app_server); + // Grading + grading_test_early(); + + // TODO: Spawn system processes etc. here + struct bootinfo_serialized * bi_ser; err = aos_urpc_get_bootinfo(&urpc_to_bsp, &bi_ser); if (err_is_fail(err)) return err;