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 c0776dd..ee825c0 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; @@ -236,11 +237,6 @@ app_main(int argc, char *argv[]) { err = cap_retype(cap_selfep, cap_dispatcher, 0, ObjType_EndPointLMP, 0, 1); if (err_is_fail(err)) return err; - // 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; @@ -254,6 +250,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;