From 06427c8df4b5e10729fd2d648e3e974ae92df8d4 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 14 May 2021 09:14:11 +0200 Subject: rtems: Check entry point in rtems_task_start() Close #4409. --- cpukit/rtems/src/taskstart.c | 4 ++++ testsuites/sptests/sptask_err04/task1.c | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/cpukit/rtems/src/taskstart.c b/cpukit/rtems/src/taskstart.c index 247756fcb1..08bdfe8027 100644 --- a/cpukit/rtems/src/taskstart.c +++ b/cpukit/rtems/src/taskstart.c @@ -41,6 +41,10 @@ rtems_status_code rtems_task_start( ISR_lock_Context lock_context; bool ok; + if ( entry_point == NULL ) { + return RTEMS_INVALID_ADDRESS; + } + the_thread = _Thread_Get( id, &lock_context ); if ( the_thread == NULL ) { diff --git a/testsuites/sptests/sptask_err04/task1.c b/testsuites/sptests/sptask_err04/task1.c index 29b63db5f4..c1f59d81fb 100644 --- a/testsuites/sptests/sptask_err04/task1.c +++ b/testsuites/sptests/sptask_err04/task1.c @@ -165,6 +165,15 @@ rtems_task Task_1( ); puts( "TA1 - rtems_task_start - RTEMS_INVALID_ID" ); + /* NULL entry point */ + status = rtems_task_start( RTEMS_SELF, NULL, 0 ); + fatal_directive_status( + status, + RTEMS_INVALID_ADDRESS, + "rtems_task_start with NULL entry point" + ); + puts( "TA1 - rtems_task_start - RTEMS_INVALID_ADDRESS" ); + /* already started */ status = rtems_task_start( RTEMS_SELF, Task_1, 0 ); fatal_directive_status( -- cgit v1.2.3