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:20:26 +0200 |
commit | b87d2a6364ecc9f11572eac1bb557336b5f3736d (patch) | |
tree | e1059bf892229eadd367d9de4e148fad0c4fe0f4 | |
parent | validation: Add INVALID_ID to tx-support.h (diff) | |
download | rtems-b87d2a6364ecc9f11572eac1bb557336b5f3736d.tar.bz2 |
rtems: Check entry point in rtems_task_start()
Close #4410.
-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 eca9b5795d..57dbfc83b9 100644 --- a/cpukit/rtems/src/taskstart.c +++ b/cpukit/rtems/src/taskstart.c @@ -43,6 +43,10 @@ rtems_status_code rtems_task_start( ISR_lock_Context lock_context; Status_Control status; + 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( |