diff options
-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( |