@@ -3521,27 +3521,28 @@ static BaseType_t prvCreateIdleTasks( void )
3521
3521
{
3522
3522
BaseType_t xReturn = pdPASS ;
3523
3523
BaseType_t xCoreID ;
3524
- char cIdleName [ configMAX_TASK_NAME_LEN ];
3524
+ char cIdleName [ configMAX_TASK_NAME_LEN ] = { 0 } ;
3525
3525
TaskFunction_t pxIdleTaskFunction = NULL ;
3526
3526
BaseType_t xIdleTaskNameIndex ;
3527
+ BaseType_t xIdleNameLen ;
3528
+ BaseType_t xCopyLen ;
3527
3529
3528
- for ( xIdleTaskNameIndex = ( BaseType_t ) 0 ; xIdleTaskNameIndex < ( BaseType_t ) configMAX_TASK_NAME_LEN ; xIdleTaskNameIndex ++ )
3530
+ configASSERT ( configIDLE_TASK_NAME != NULL && configMAX_TASK_NAME_LEN > 3 );
3531
+
3532
+ /* The length of the idle task name is limited to the minimum of the length
3533
+ * of configIDLE_TASK_NAME and configMAX_TASK_NAME_LEN - 2, keeping space
3534
+ * for the core ID suffix and the null-terminator. */
3535
+ xIdleNameLen = sizeof ( configIDLE_TASK_NAME ) - 1 ;
3536
+ xCopyLen = ( xIdleNameLen < configMAX_TASK_NAME_LEN - 2 ) ? xIdleNameLen : configMAX_TASK_NAME_LEN - 2 ;
3537
+
3538
+ for ( xIdleTaskNameIndex = ( BaseType_t ) 0 ; xIdleTaskNameIndex < xCopyLen ; xIdleTaskNameIndex ++ )
3529
3539
{
3530
3540
cIdleName [ xIdleTaskNameIndex ] = configIDLE_TASK_NAME [ xIdleTaskNameIndex ];
3531
-
3532
- /* Don't copy all configMAX_TASK_NAME_LEN if the string is shorter than
3533
- * configMAX_TASK_NAME_LEN characters just in case the memory after the
3534
- * string is not accessible (extremely unlikely). */
3535
- if ( cIdleName [ xIdleTaskNameIndex ] == ( char ) 0x00 )
3536
- {
3537
- break ;
3538
- }
3539
- else
3540
- {
3541
- mtCOVERAGE_TEST_MARKER ();
3542
- }
3543
3541
}
3544
3542
3543
+ /* Ensure null termination. */
3544
+ cIdleName [ xIdleTaskNameIndex ] = '\0' ;
3545
+
3545
3546
/* Add each idle task at the lowest priority. */
3546
3547
for ( xCoreID = ( BaseType_t ) 0 ; xCoreID < ( BaseType_t ) configNUMBER_OF_CORES ; xCoreID ++ )
3547
3548
{
@@ -3570,25 +3571,9 @@ static BaseType_t prvCreateIdleTasks( void )
3570
3571
* only one idle task. */
3571
3572
#if ( configNUMBER_OF_CORES > 1 )
3572
3573
{
3573
- /* Append the idle task number to the end of the name if there is space. */
3574
- if ( xIdleTaskNameIndex < ( BaseType_t ) configMAX_TASK_NAME_LEN )
3575
- {
3576
- cIdleName [ xIdleTaskNameIndex ] = ( char ) ( xCoreID + '0' );
3577
-
3578
- /* And append a null character if there is space. */
3579
- if ( ( xIdleTaskNameIndex + 1 ) < ( BaseType_t ) configMAX_TASK_NAME_LEN )
3580
- {
3581
- cIdleName [ xIdleTaskNameIndex + 1 ] = '\0' ;
3582
- }
3583
- else
3584
- {
3585
- mtCOVERAGE_TEST_MARKER ();
3586
- }
3587
- }
3588
- else
3589
- {
3590
- mtCOVERAGE_TEST_MARKER ();
3591
- }
3574
+ /* Append the idle task number to the end of the name. */
3575
+ cIdleName [ xIdleTaskNameIndex ] = ( char ) ( xCoreID + '0' );
3576
+ cIdleName [ xIdleTaskNameIndex + 1 ] = '\0' ;
3592
3577
}
3593
3578
#endif /* if ( configNUMBER_OF_CORES > 1 ) */
3594
3579
0 commit comments