From 0e199e6d061ca0bfd065eda131f7d24d717d3c04 Mon Sep 17 00:00:00 2001 From: ARYA MGC Date: Wed, 15 Jul 2026 22:05:29 +0530 Subject: [PATCH 1/2] Fix: strncpy() may leave pcWriteBuffer non-null-terminated in FreeRTOS_CLI.c (#1422) --- FreeRTOS-Plus/Source/FreeRTOS-Plus-CLI/FreeRTOS_CLI.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/FreeRTOS-Plus/Source/FreeRTOS-Plus-CLI/FreeRTOS_CLI.c b/FreeRTOS-Plus/Source/FreeRTOS-Plus-CLI/FreeRTOS_CLI.c index 783ed3b2ed2..a4871375c50 100644 --- a/FreeRTOS-Plus/Source/FreeRTOS-Plus-CLI/FreeRTOS_CLI.c +++ b/FreeRTOS-Plus/Source/FreeRTOS-Plus-CLI/FreeRTOS_CLI.c @@ -201,6 +201,7 @@ BaseType_t FreeRTOS_CLIProcessCommand( const char * const pcCommandInput, /* The command was found, but the number of parameters with the command * was incorrect. */ strncpy( pcWriteBuffer, "Incorrect command parameter(s). Enter \"help\" to view a list of available commands.\r\n\r\n", xWriteBufferLen ); + pcWriteBuffer[ xWriteBufferLen - 1 ] = '\0'; pxCommand = NULL; } else if( pxCommand != NULL ) @@ -220,6 +221,7 @@ BaseType_t FreeRTOS_CLIProcessCommand( const char * const pcCommandInput, { /* pxCommand was NULL, the command was not found. */ strncpy( pcWriteBuffer, "Command not recognised. Enter 'help' to view a list of available commands.\r\n\r\n", xWriteBufferLen ); + pcWriteBuffer[ xWriteBufferLen - 1 ] = '\0'; xReturn = pdFALSE; } @@ -340,6 +342,7 @@ static BaseType_t prvHelpCommand( char * pcWriteBuffer, /* Return the next command help string, before moving the pointer on to * the next command in the list. */ strncpy( pcWriteBuffer, pxCommand->pxCommandLineDefinition->pcHelpString, xWriteBufferLen ); + pcWriteBuffer[ xWriteBufferLen - 1 ] = '\0'; pxCommand = pxCommand->pxNext; if( pxCommand == NULL ) From 6f81e4ecb1e3f160c0b314b00b54da3573de41d2 Mon Sep 17 00:00:00 2001 From: Old-Ding Date: Sun, 28 Jun 2026 02:13:08 +0800 Subject: [PATCH 2/2] fix: parse TCP echo IPv4 address into IPv4 field Store the parsed IPv4 echo server address in the IPv4 union member instead of writing it into the IPv6 byte array. Signed-off-by: Old-Ding --- .../IPv6_Multi_WinSim_demo/TCPEchoClient_SingleTasks.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_IPv6_Demo/IPv6_Multi_WinSim_demo/TCPEchoClient_SingleTasks.c b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_IPv6_Demo/IPv6_Multi_WinSim_demo/TCPEchoClient_SingleTasks.c index 0f9dcc90828..a7ffaf45a46 100644 --- a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_IPv6_Demo/IPv6_Multi_WinSim_demo/TCPEchoClient_SingleTasks.c +++ b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_IPv6_Demo/IPv6_Multi_WinSim_demo/TCPEchoClient_SingleTasks.c @@ -273,7 +273,7 @@ } else { - rc = FreeRTOS_inet_pton( FREERTOS_AF_INET4, configECHO_SERVER_ADDR_STRING, ( void * ) xEchoServerAddress.sin_address.xIP_IPv6.ucBytes ); + rc = FreeRTOS_inet_pton( FREERTOS_AF_INET4, configECHO_SERVER_ADDR_STRING, ( void * ) &( xEchoServerAddress.sin_address.ulIP_IPv4 ) ); configASSERT( rc == pdPASS ); xFamily = FREERTOS_AF_INET4; }