diff --git a/openair3/NAS/UE/nas_ue_task.c b/openair3/NAS/UE/nas_ue_task.c
index 58e38fdbc2066433a829125d16fb8c7137299a94..2a42b38a7248a3bfe24eea3bae51b9d958b76a4d 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 d786cde511f8bd8278ff6b40b29b59f384a0f350..c28b9e839c4377755498fc5a1a87e5cef27b78b2 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;
         }