diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-05-14 09:14:11 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-05-14 09:22:17 +0200 |
commit | 06427c8df4b5e10729fd2d648e3e974ae92df8d4 (patch) | |
tree | a7713eba41190b8a97de09014a80c675a0f5249b | |
parent | bsps/arm: ARMV7_CP15_START_WORKSPACE_ENTRY_INDEX (diff) | |
download | rtems-06427c8df4b5e10729fd2d648e3e974ae92df8d4.tar.bz2 |
rtems: Check entry point in rtems_task_start()
Close #4409.
-rw-r--r-- | cpukit/rtems/src/taskstart.c | 4 | ||||
-rw-r--r-- | testsuites/sptests/sptask_err04/task1.c | 9 |
2 files changed, 13 insertions, 0 deletions
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( |