From 7b36af059778a40cbf9cfd41bfc40ead080cb5ab Mon Sep 17 00:00:00 2001 From: Cedric Roux <cedric.roux@eurecom.fr> Date: Wed, 15 Feb 2017 15:38:37 +0100 Subject: [PATCH] bugfix: variable was on the stack Guess what happens when we return from the function... --- openair3/NAS/UE/nas_ue_task.c | 3 +++ targets/COMMON/create_tasks.c | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/openair3/NAS/UE/nas_ue_task.c b/openair3/NAS/UE/nas_ue_task.c index 58e38fdbc20..2a42b38a724 100644 --- a/openair3/NAS/UE/nas_ue_task.c +++ b/openair3/NAS/UE/nas_ue_task.c @@ -271,6 +271,9 @@ void *nas_ue_task(void *args_p) } } } + + free(users); + return NULL; } nas_user_t *find_user_from_fd(nas_user_container_t *users, int fd) { diff --git a/targets/COMMON/create_tasks.c b/targets/COMMON/create_tasks.c index d786cde511f..c28b9e839c4 100644 --- a/targets/COMMON/create_tasks.c +++ b/targets/COMMON/create_tasks.c @@ -85,9 +85,10 @@ int create_tasks(uint32_t enb_nb, uint32_t ue_nb) # if defined(NAS_BUILT_IN_UE) if (ue_nb > 0) { - nas_user_container_t users; - users.count = ue_nb; - if (itti_create_task (TASK_NAS_UE, nas_ue_task, &users) < 0) { + nas_user_container_t *users = calloc(1, sizeof(*users)); + if (users == NULL) abort(); + users->count = ue_nb; + if (itti_create_task (TASK_NAS_UE, nas_ue_task, users) < 0) { LOG_E(NAS, "Create task for NAS UE failed\n"); return -1; } -- GitLab