From 817212b60f308fe10f667cce529cafb47a403faa Mon Sep 17 00:00:00 2001 From: Frank Voorburg Date: Fri, 9 Feb 2018 10:12:04 +0000 Subject: [PATCH] Refs #477. Added extra check for the received XCP packet length on the UART and USB transport layers. git-svn-id: https://svn.code.sf.net/p/openblt/code/trunk@423 5dc33758-31d5-4daf-9ae8-b24bf3d40d73 --- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/boot.c | 3 +- .../ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/boot.c | 3 +- .../ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../ARMCM4_TM4C_DK_TM4C123G_IAR/Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Prog/boot.c | 3 +- .../Boot/bin/openblt_evbplus_dragon12p.abs | Bin 251448 -> 251856 bytes .../bin/openblt_evbplus_dragon12p.abs.phy | 247 ++++----- .../bin/openblt_evbplus_dragon12p.abs.s19 | 247 ++++----- .../Boot/bin/openblt_evbplus_dragon12p.map | 472 +++++++++--------- .../Boot/ide/hcs12.mcp | Bin 60518 -> 60518 bytes .../Boot/ide/hcs12_Data/CWSettingsWindows.stg | Bin 4191 -> 4256 bytes .../hcs12_Data/Standard/TargetDataWindows.tdt | Bin 553150 -> 569680 bytes .../Prog/boot.c | 3 +- Target/Source/ARM7_LPC2000/uart.c | 3 +- Target/Source/ARMCM0_STM32F0/uart.c | 3 +- Target/Source/ARMCM0_XMC1/uart.c | 3 +- Target/Source/ARMCM3_EFM32/uart.c | 3 +- Target/Source/ARMCM3_LM3S/uart.c | 3 +- Target/Source/ARMCM3_STM32F1/uart.c | 3 +- Target/Source/ARMCM3_STM32F1/usb.c | 3 +- Target/Source/ARMCM3_STM32F2/uart.c | 3 +- Target/Source/ARMCM4_STM32F3/uart.c | 3 +- Target/Source/ARMCM4_STM32F4/uart.c | 3 +- Target/Source/ARMCM4_STM32F4/usb.c | 3 +- Target/Source/ARMCM4_STM32L4/uart.c | 3 +- Target/Source/ARMCM4_TM4C/uart.c | 3 +- Target/Source/ARMCM4_TM4C/usb.c | 3 +- Target/Source/ARMCM4_XMC4/uart.c | 3 +- Target/Source/HCS12/uart.c | 3 +- Target/Source/TRICORE_TC1798/uart.c | 3 +- 66 files changed, 604 insertions(+), 539 deletions(-) diff --git a/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/boot.c b/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/boot.c index a7b48568..9fa35dbe 100644 --- a/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/boot.c +++ b/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/boot.c @@ -185,7 +185,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM0_STM32F0_Discovery_STM32F051_GCC/Prog/boot.c b/Target/Demo/ARMCM0_STM32F0_Discovery_STM32F051_GCC/Prog/boot.c index 1273180a..05ea8432 100644 --- a/Target/Demo/ARMCM0_STM32F0_Discovery_STM32F051_GCC/Prog/boot.c +++ b/Target/Demo/ARMCM0_STM32F0_Discovery_STM32F051_GCC/Prog/boot.c @@ -156,7 +156,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM0_STM32F0_Discovery_STM32F051_IAR/Prog/boot.c b/Target/Demo/ARMCM0_STM32F0_Discovery_STM32F051_IAR/Prog/boot.c index 4f62fbbd..c1fb1af8 100644 --- a/Target/Demo/ARMCM0_STM32F0_Discovery_STM32F051_IAR/Prog/boot.c +++ b/Target/Demo/ARMCM0_STM32F0_Discovery_STM32F051_IAR/Prog/boot.c @@ -156,7 +156,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM0_STM32F0_Discovery_STM32F051_Keil/Prog/boot.c b/Target/Demo/ARMCM0_STM32F0_Discovery_STM32F051_Keil/Prog/boot.c index ea48d74b..6dca0a24 100644 --- a/Target/Demo/ARMCM0_STM32F0_Discovery_STM32F051_Keil/Prog/boot.c +++ b/Target/Demo/ARMCM0_STM32F0_Discovery_STM32F051_Keil/Prog/boot.c @@ -156,7 +156,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM0_STM32F0_Nucleo_F091RC_GCC/Prog/boot.c b/Target/Demo/ARMCM0_STM32F0_Nucleo_F091RC_GCC/Prog/boot.c index 156f3ac6..115a7ea5 100644 --- a/Target/Demo/ARMCM0_STM32F0_Nucleo_F091RC_GCC/Prog/boot.c +++ b/Target/Demo/ARMCM0_STM32F0_Nucleo_F091RC_GCC/Prog/boot.c @@ -166,7 +166,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM0_STM32F0_Nucleo_F091RC_IAR/Prog/boot.c b/Target/Demo/ARMCM0_STM32F0_Nucleo_F091RC_IAR/Prog/boot.c index ac3b25b7..ceaa03f6 100644 --- a/Target/Demo/ARMCM0_STM32F0_Nucleo_F091RC_IAR/Prog/boot.c +++ b/Target/Demo/ARMCM0_STM32F0_Nucleo_F091RC_IAR/Prog/boot.c @@ -166,7 +166,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM0_STM32F0_Nucleo_F091RC_Keil/Prog/boot.c b/Target/Demo/ARMCM0_STM32F0_Nucleo_F091RC_Keil/Prog/boot.c index 81d5bbeb..1f7363e7 100644 --- a/Target/Demo/ARMCM0_STM32F0_Nucleo_F091RC_Keil/Prog/boot.c +++ b/Target/Demo/ARMCM0_STM32F0_Nucleo_F091RC_Keil/Prog/boot.c @@ -166,7 +166,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM0_STM32F0_Nucleo_F091RC_TrueStudio/Prog/boot.c b/Target/Demo/ARMCM0_STM32F0_Nucleo_F091RC_TrueStudio/Prog/boot.c index e8531a4e..e8d7ea9f 100644 --- a/Target/Demo/ARMCM0_STM32F0_Nucleo_F091RC_TrueStudio/Prog/boot.c +++ b/Target/Demo/ARMCM0_STM32F0_Nucleo_F091RC_TrueStudio/Prog/boot.c @@ -166,7 +166,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM0_XMC1_XMC1400_Boot_Kit_GCC/Prog/boot.c b/Target/Demo/ARMCM0_XMC1_XMC1400_Boot_Kit_GCC/Prog/boot.c index fcccc216..484d6a3c 100644 --- a/Target/Demo/ARMCM0_XMC1_XMC1400_Boot_Kit_GCC/Prog/boot.c +++ b/Target/Demo/ARMCM0_XMC1_XMC1400_Boot_Kit_GCC/Prog/boot.c @@ -170,7 +170,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM0_XMC1_XMC1400_Boot_Kit_IAR/Prog/boot.c b/Target/Demo/ARMCM0_XMC1_XMC1400_Boot_Kit_IAR/Prog/boot.c index 6652807e..d5536dfc 100644 --- a/Target/Demo/ARMCM0_XMC1_XMC1400_Boot_Kit_IAR/Prog/boot.c +++ b/Target/Demo/ARMCM0_XMC1_XMC1400_Boot_Kit_IAR/Prog/boot.c @@ -170,7 +170,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM3_EFM32_Olimex_EM32G880F128STK_Crossworks/Prog/boot.c b/Target/Demo/ARMCM3_EFM32_Olimex_EM32G880F128STK_Crossworks/Prog/boot.c index 5e881359..6d479b72 100644 --- a/Target/Demo/ARMCM3_EFM32_Olimex_EM32G880F128STK_Crossworks/Prog/boot.c +++ b/Target/Demo/ARMCM3_EFM32_Olimex_EM32G880F128STK_Crossworks/Prog/boot.c @@ -154,7 +154,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM3_EFM32_Olimex_EM32G880F128STK_GCC/Prog/boot.c b/Target/Demo/ARMCM3_EFM32_Olimex_EM32G880F128STK_GCC/Prog/boot.c index 614878c1..7cd86579 100644 --- a/Target/Demo/ARMCM3_EFM32_Olimex_EM32G880F128STK_GCC/Prog/boot.c +++ b/Target/Demo/ARMCM3_EFM32_Olimex_EM32G880F128STK_GCC/Prog/boot.c @@ -154,7 +154,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM3_EFM32_Olimex_EM32G880F128STK_IAR/Prog/boot.c b/Target/Demo/ARMCM3_EFM32_Olimex_EM32G880F128STK_IAR/Prog/boot.c index 9983aa58..d25ef100 100644 --- a/Target/Demo/ARMCM3_EFM32_Olimex_EM32G880F128STK_IAR/Prog/boot.c +++ b/Target/Demo/ARMCM3_EFM32_Olimex_EM32G880F128STK_IAR/Prog/boot.c @@ -154,7 +154,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/boot.c b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/boot.c index d550d4ef..e37543cd 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/boot.c +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/boot.c @@ -138,7 +138,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/boot.c b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/boot.c index 665e070f..d961a2cb 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/boot.c +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/boot.c @@ -138,7 +138,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/boot.c b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/boot.c index 49354356..bcfaafc8 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/boot.c +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/boot.c @@ -138,7 +138,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/boot.c b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/boot.c index 0fcc7ebd..1b27173d 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/boot.c +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/boot.c @@ -148,7 +148,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/boot.c b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/boot.c index 1e06868f..219114ae 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/boot.c +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/boot.c @@ -148,7 +148,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/boot.c b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/boot.c index d5677c2d..88c567c6 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/boot.c +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/boot.c @@ -148,7 +148,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Prog/boot.c b/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Prog/boot.c index 0e86a6c8..5a03a3f2 100644 --- a/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Prog/boot.c +++ b/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_GCC/Prog/boot.c @@ -156,7 +156,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_IAR/Prog/boot.c b/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_IAR/Prog/boot.c index 50d3bd34..f065a3c4 100644 --- a/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_IAR/Prog/boot.c +++ b/Target/Demo/ARMCM3_STM32F1_Nucleo_F103RB_IAR/Prog/boot.c @@ -156,7 +156,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM3_STM32F1_Olimex_STM32P103_Crossworks/Prog/boot.c b/Target/Demo/ARMCM3_STM32F1_Olimex_STM32P103_Crossworks/Prog/boot.c index 75baffdd..5b3136aa 100644 --- a/Target/Demo/ARMCM3_STM32F1_Olimex_STM32P103_Crossworks/Prog/boot.c +++ b/Target/Demo/ARMCM3_STM32F1_Olimex_STM32P103_Crossworks/Prog/boot.c @@ -165,7 +165,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM3_STM32F1_Olimex_STM32P103_GCC/Prog/boot.c b/Target/Demo/ARMCM3_STM32F1_Olimex_STM32P103_GCC/Prog/boot.c index bda53f62..791d90ee 100644 --- a/Target/Demo/ARMCM3_STM32F1_Olimex_STM32P103_GCC/Prog/boot.c +++ b/Target/Demo/ARMCM3_STM32F1_Olimex_STM32P103_GCC/Prog/boot.c @@ -165,7 +165,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM3_STM32F1_Olimex_STM32P103_IAR/Prog/boot.c b/Target/Demo/ARMCM3_STM32F1_Olimex_STM32P103_IAR/Prog/boot.c index 84e3104a..fb81371e 100644 --- a/Target/Demo/ARMCM3_STM32F1_Olimex_STM32P103_IAR/Prog/boot.c +++ b/Target/Demo/ARMCM3_STM32F1_Olimex_STM32P103_IAR/Prog/boot.c @@ -165,7 +165,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM3_STM32F1_Olimex_STM32P103_Keil/Prog/boot.c b/Target/Demo/ARMCM3_STM32F1_Olimex_STM32P103_Keil/Prog/boot.c index 8516880d..c2b2c33e 100644 --- a/Target/Demo/ARMCM3_STM32F1_Olimex_STM32P103_Keil/Prog/boot.c +++ b/Target/Demo/ARMCM3_STM32F1_Olimex_STM32P103_Keil/Prog/boot.c @@ -165,7 +165,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM3_STM32F2_Olimex_STM32P207_GCC/Prog/boot.c b/Target/Demo/ARMCM3_STM32F2_Olimex_STM32P207_GCC/Prog/boot.c index 70c2717c..36186d2b 100644 --- a/Target/Demo/ARMCM3_STM32F2_Olimex_STM32P207_GCC/Prog/boot.c +++ b/Target/Demo/ARMCM3_STM32F2_Olimex_STM32P207_GCC/Prog/boot.c @@ -171,7 +171,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM3_STM32F2_Olimex_STM32P207_IAR/Prog/boot.c b/Target/Demo/ARMCM3_STM32F2_Olimex_STM32P207_IAR/Prog/boot.c index 1dd5b105..20938dc2 100644 --- a/Target/Demo/ARMCM3_STM32F2_Olimex_STM32P207_IAR/Prog/boot.c +++ b/Target/Demo/ARMCM3_STM32F2_Olimex_STM32P207_IAR/Prog/boot.c @@ -171,7 +171,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM4_STM32F3_Nucleo_F303K8_GCC/Prog/boot.c b/Target/Demo/ARMCM4_STM32F3_Nucleo_F303K8_GCC/Prog/boot.c index b80bbf85..99c91d52 100644 --- a/Target/Demo/ARMCM4_STM32F3_Nucleo_F303K8_GCC/Prog/boot.c +++ b/Target/Demo/ARMCM4_STM32F3_Nucleo_F303K8_GCC/Prog/boot.c @@ -156,7 +156,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM4_STM32F3_Nucleo_F303K8_IAR/Prog/boot.c b/Target/Demo/ARMCM4_STM32F3_Nucleo_F303K8_IAR/Prog/boot.c index f8d0620d..e735cd71 100644 --- a/Target/Demo/ARMCM4_STM32F3_Nucleo_F303K8_IAR/Prog/boot.c +++ b/Target/Demo/ARMCM4_STM32F3_Nucleo_F303K8_IAR/Prog/boot.c @@ -156,7 +156,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM4_STM32F3_Nucleo_F303K8_TrueStudio/Prog/boot.c b/Target/Demo/ARMCM4_STM32F3_Nucleo_F303K8_TrueStudio/Prog/boot.c index 9d9378f1..8b9125c7 100644 --- a/Target/Demo/ARMCM4_STM32F3_Nucleo_F303K8_TrueStudio/Prog/boot.c +++ b/Target/Demo/ARMCM4_STM32F3_Nucleo_F303K8_TrueStudio/Prog/boot.c @@ -156,7 +156,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM4_STM32F4_Olimex_STM32E407_GCC/Prog/boot.c b/Target/Demo/ARMCM4_STM32F4_Olimex_STM32E407_GCC/Prog/boot.c index 5a4962cb..638df95f 100644 --- a/Target/Demo/ARMCM4_STM32F4_Olimex_STM32E407_GCC/Prog/boot.c +++ b/Target/Demo/ARMCM4_STM32F4_Olimex_STM32E407_GCC/Prog/boot.c @@ -170,7 +170,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM4_STM32F4_Olimex_STM32E407_IAR/Prog/boot.c b/Target/Demo/ARMCM4_STM32F4_Olimex_STM32E407_IAR/Prog/boot.c index c795a694..96aab8ce 100644 --- a/Target/Demo/ARMCM4_STM32F4_Olimex_STM32E407_IAR/Prog/boot.c +++ b/Target/Demo/ARMCM4_STM32F4_Olimex_STM32E407_IAR/Prog/boot.c @@ -170,7 +170,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM4_STM32F4_Olimex_STM32P405_GCC/Prog/boot.c b/Target/Demo/ARMCM4_STM32F4_Olimex_STM32P405_GCC/Prog/boot.c index f2dac62b..06718b24 100644 --- a/Target/Demo/ARMCM4_STM32F4_Olimex_STM32P405_GCC/Prog/boot.c +++ b/Target/Demo/ARMCM4_STM32F4_Olimex_STM32P405_GCC/Prog/boot.c @@ -170,7 +170,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM4_STM32F4_Olimex_STM32P405_IAR/Prog/boot.c b/Target/Demo/ARMCM4_STM32F4_Olimex_STM32P405_IAR/Prog/boot.c index 6df5f375..e63592ce 100644 --- a/Target/Demo/ARMCM4_STM32F4_Olimex_STM32P405_IAR/Prog/boot.c +++ b/Target/Demo/ARMCM4_STM32F4_Olimex_STM32P405_IAR/Prog/boot.c @@ -170,7 +170,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM4_STM32F4_Olimex_STM32P405_TrueStudio/Prog/boot.c b/Target/Demo/ARMCM4_STM32F4_Olimex_STM32P405_TrueStudio/Prog/boot.c index d45e5575..b2012e55 100644 --- a/Target/Demo/ARMCM4_STM32F4_Olimex_STM32P405_TrueStudio/Prog/boot.c +++ b/Target/Demo/ARMCM4_STM32F4_Olimex_STM32P405_TrueStudio/Prog/boot.c @@ -170,7 +170,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM4_STM32L4_Nucleo_L476RG_GCC/Prog/boot.c b/Target/Demo/ARMCM4_STM32L4_Nucleo_L476RG_GCC/Prog/boot.c index 6c4c7553..dce98d98 100644 --- a/Target/Demo/ARMCM4_STM32L4_Nucleo_L476RG_GCC/Prog/boot.c +++ b/Target/Demo/ARMCM4_STM32L4_Nucleo_L476RG_GCC/Prog/boot.c @@ -159,7 +159,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM4_STM32L4_Nucleo_L476RG_IAR/Prog/boot.c b/Target/Demo/ARMCM4_STM32L4_Nucleo_L476RG_IAR/Prog/boot.c index 8dda6017..f2b01611 100644 --- a/Target/Demo/ARMCM4_STM32L4_Nucleo_L476RG_IAR/Prog/boot.c +++ b/Target/Demo/ARMCM4_STM32L4_Nucleo_L476RG_IAR/Prog/boot.c @@ -159,7 +159,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM4_STM32L4_Nucleo_L476RG_TrueStudio/Prog/boot.c b/Target/Demo/ARMCM4_STM32L4_Nucleo_L476RG_TrueStudio/Prog/boot.c index cce2ce9d..8f083f6b 100644 --- a/Target/Demo/ARMCM4_STM32L4_Nucleo_L476RG_TrueStudio/Prog/boot.c +++ b/Target/Demo/ARMCM4_STM32L4_Nucleo_L476RG_TrueStudio/Prog/boot.c @@ -159,7 +159,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM4_TM4C_DK_TM4C123G_IAR/Prog/boot.c b/Target/Demo/ARMCM4_TM4C_DK_TM4C123G_IAR/Prog/boot.c index 6918e590..491e72e7 100644 --- a/Target/Demo/ARMCM4_TM4C_DK_TM4C123G_IAR/Prog/boot.c +++ b/Target/Demo/ARMCM4_TM4C_DK_TM4C123G_IAR/Prog/boot.c @@ -137,7 +137,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM4_XMC4_XMC4700_Relax_Kit_GCC/Prog/boot.c b/Target/Demo/ARMCM4_XMC4_XMC4700_Relax_Kit_GCC/Prog/boot.c index f9c95817..d448e137 100644 --- a/Target/Demo/ARMCM4_XMC4_XMC4700_Relax_Kit_GCC/Prog/boot.c +++ b/Target/Demo/ARMCM4_XMC4_XMC4700_Relax_Kit_GCC/Prog/boot.c @@ -174,7 +174,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/ARMCM4_XMC4_XMC4700_Relax_Kit_IAR/Prog/boot.c b/Target/Demo/ARMCM4_XMC4_XMC4700_Relax_Kit_IAR/Prog/boot.c index 0f0b9564..6924ded2 100644 --- a/Target/Demo/ARMCM4_XMC4_XMC4700_Relax_Kit_IAR/Prog/boot.c +++ b/Target/Demo/ARMCM4_XMC4_XMC4700_Relax_Kit_IAR/Prog/boot.c @@ -174,7 +174,8 @@ static void BootComUartCheckActivationRequest(void) if (UartReceiveByte(&xcpCtoReqPacket[0]) == 1) { /* check that the length has a valid value. it should not be 0 */ - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Demo/HCS12_Evbplus_Dragon12p_CodeWarrior/Boot/bin/openblt_evbplus_dragon12p.abs b/Target/Demo/HCS12_Evbplus_Dragon12p_CodeWarrior/Boot/bin/openblt_evbplus_dragon12p.abs index 7a3f4ff159420fcc6a04a2ac1256594d91601e25..d2af7a919a307362eaea5461a82f6c339eeb974b 100644 GIT binary patch delta 19292 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 Z?Xe*6Y~!+qN4&A|6b=`Vmiv^5{(m9CThRaj delta 19153 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 NS|5Ei#sIJX0~&> zi?1ovZ+6uF#kl#T#3#ndGQzr>UrNnmoXn}pJJCmQ@*WwE&1+0PP;e z%{I5R_?h16P0o1f#w2ApdBaOFDLFR=1`##}hP2e8f`mmgS!996gMg9G+X0oV4#a~RG|4LlaRGNXI1uDC%ZYGO5 zRCed&^FY~GKv_GeY)$Y?7EP$E#^nF6#HAu-5GL~m&1BJr%AQ+3+2FO9l=KP)hDfO9 z1s*e5K#l-`k`6b%)ns52$A+ko5^Ab Ul}@=b`M_&2CQaeVH(vJv0QUcdOaK4? delta 533 zcmaEMgZbGF<_(jC7>g!P7HXJWD5N-fgN)c_FX4J-w$$QXSGAcp7n=TJ+GXMcM5VHm6mlh?b3ILffVO}7c)x$a1(1;O9ln=<}cFs>p4Noj8 z%FHhUav4AdD^GqeS-e^65*y>@j4LuMqRc>XkZB;A2Z-~4?msp;&^Kjsz`k;(%{I5R z_?djJPtJJh#`I2a@`jgUQlFd|7)00@7}8RU3KAC0WRV5x0s%I!$q!zNG1bkT{NrVn z?joQFNQL~gnJg+`c?Jditp%hDfO91s*e5 zK#l+bk7bh+fYPTCqF-#nSp^pgOPzjpO1kdoS%V#1IXsyC~3#Pxq+X95dfT=2Fw5e diff --git a/Target/Demo/HCS12_Evbplus_Dragon12p_CodeWarrior/Boot/ide/hcs12_Data/Standard/TargetDataWindows.tdt b/Target/Demo/HCS12_Evbplus_Dragon12p_CodeWarrior/Boot/ide/hcs12_Data/Standard/TargetDataWindows.tdt index d7d5c890fe27f144d86988df6d1bd683c8b00e03..e01c597afe06dc9e743f08fc0f73646cba16b2af 100644 GIT binary patch delta 10915 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 Gs{IclFJk=w delta 9165 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 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Source/ARM7_LPC2000/uart.c b/Target/Source/ARM7_LPC2000/uart.c index 99d43e86..61fb9ddf 100644 --- a/Target/Source/ARM7_LPC2000/uart.c +++ b/Target/Source/ARM7_LPC2000/uart.c @@ -181,7 +181,8 @@ blt_bool UartReceivePacket(blt_int8u *data) /* store the message length when received */ if (UartReceiveByte(&xcpCtoReqPacket[0]) == BLT_TRUE) { - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Source/ARMCM0_STM32F0/uart.c b/Target/Source/ARMCM0_STM32F0/uart.c index 43737e69..7e551cac 100644 --- a/Target/Source/ARMCM0_STM32F0/uart.c +++ b/Target/Source/ARMCM0_STM32F0/uart.c @@ -161,7 +161,8 @@ blt_bool UartReceivePacket(blt_int8u *data) /* store the message length when received */ if (UartReceiveByte(&xcpCtoReqPacket[0]) == BLT_TRUE) { - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Source/ARMCM0_XMC1/uart.c b/Target/Source/ARMCM0_XMC1/uart.c index ccd9eeb2..97d106f5 100644 --- a/Target/Source/ARMCM0_XMC1/uart.c +++ b/Target/Source/ARMCM0_XMC1/uart.c @@ -151,7 +151,8 @@ blt_bool UartReceivePacket(blt_int8u *data) /* store the message length when received */ if (UartReceiveByte(&xcpCtoReqPacket[0]) == BLT_TRUE) { - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Source/ARMCM3_EFM32/uart.c b/Target/Source/ARMCM3_EFM32/uart.c index e8da3f83..d76540fb 100644 --- a/Target/Source/ARMCM3_EFM32/uart.c +++ b/Target/Source/ARMCM3_EFM32/uart.c @@ -142,7 +142,8 @@ blt_bool UartReceivePacket(blt_int8u *data) /* store the message length when received */ if (UartReceiveByte(&xcpCtoReqPacket[0]) == BLT_TRUE) { - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Source/ARMCM3_LM3S/uart.c b/Target/Source/ARMCM3_LM3S/uart.c index fe075a70..aa9ff06e 100644 --- a/Target/Source/ARMCM3_LM3S/uart.c +++ b/Target/Source/ARMCM3_LM3S/uart.c @@ -125,7 +125,8 @@ blt_bool UartReceivePacket(blt_int8u *data) /* store the message length when received */ if (UartReceiveByte(&xcpCtoReqPacket[0]) == BLT_TRUE) { - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Source/ARMCM3_STM32F1/uart.c b/Target/Source/ARMCM3_STM32F1/uart.c index f603e60d..6fee7d90 100644 --- a/Target/Source/ARMCM3_STM32F1/uart.c +++ b/Target/Source/ARMCM3_STM32F1/uart.c @@ -175,7 +175,8 @@ blt_bool UartReceivePacket(blt_int8u *data) /* store the message length when received */ if (UartReceiveByte(&xcpCtoReqPacket[0]) == BLT_TRUE) { - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Source/ARMCM3_STM32F1/usb.c b/Target/Source/ARMCM3_STM32F1/usb.c index ad267c63..020e9df4 100644 --- a/Target/Source/ARMCM3_STM32F1/usb.c +++ b/Target/Source/ARMCM3_STM32F1/usb.c @@ -189,7 +189,8 @@ blt_bool UsbReceivePacket(blt_int8u *data) /* store the message length when received */ if (UsbReceiveByte(&xcpCtoReqPacket[0]) == BLT_TRUE) { - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_USB_RX_MAX_DATA) ) { /* indicate that a cto packet is being received */ xcpCtoRxInProgress = BLT_TRUE; diff --git a/Target/Source/ARMCM3_STM32F2/uart.c b/Target/Source/ARMCM3_STM32F2/uart.c index 93d08c85..4641e6a3 100644 --- a/Target/Source/ARMCM3_STM32F2/uart.c +++ b/Target/Source/ARMCM3_STM32F2/uart.c @@ -151,7 +151,8 @@ blt_bool UartReceivePacket(blt_int8u *data) /* store the message length when received */ if (UartReceiveByte(&xcpCtoReqPacket[0]) == BLT_TRUE) { - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Source/ARMCM4_STM32F3/uart.c b/Target/Source/ARMCM4_STM32F3/uart.c index a56a8483..df7203a7 100644 --- a/Target/Source/ARMCM4_STM32F3/uart.c +++ b/Target/Source/ARMCM4_STM32F3/uart.c @@ -141,7 +141,8 @@ blt_bool UartReceivePacket(blt_int8u *data) /* store the message length when received */ if (UartReceiveByte(&xcpCtoReqPacket[0]) == BLT_TRUE) { - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Source/ARMCM4_STM32F4/uart.c b/Target/Source/ARMCM4_STM32F4/uart.c index 07bba123..708dad45 100644 --- a/Target/Source/ARMCM4_STM32F4/uart.c +++ b/Target/Source/ARMCM4_STM32F4/uart.c @@ -152,7 +152,8 @@ blt_bool UartReceivePacket(blt_int8u *data) /* store the message length when received */ if (UartReceiveByte(&xcpCtoReqPacket[0]) == BLT_TRUE) { - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Source/ARMCM4_STM32F4/usb.c b/Target/Source/ARMCM4_STM32F4/usb.c index c163cd9a..be78b32a 100644 --- a/Target/Source/ARMCM4_STM32F4/usb.c +++ b/Target/Source/ARMCM4_STM32F4/usb.c @@ -190,7 +190,8 @@ blt_bool UsbReceivePacket(blt_int8u *data) /* store the message length when received */ if (UsbReceiveByte(&xcpCtoReqPacket[0]) == BLT_TRUE) { - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_USB_RX_MAX_DATA) ) { /* indicate that a cto packet is being received */ xcpCtoRxInProgress = BLT_TRUE; diff --git a/Target/Source/ARMCM4_STM32L4/uart.c b/Target/Source/ARMCM4_STM32L4/uart.c index d1bcd318..aa862728 100644 --- a/Target/Source/ARMCM4_STM32L4/uart.c +++ b/Target/Source/ARMCM4_STM32L4/uart.c @@ -149,7 +149,8 @@ blt_bool UartReceivePacket(blt_int8u *data) /* store the message length when received */ if (UartReceiveByte(&xcpCtoReqPacket[0]) == BLT_TRUE) { - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Source/ARMCM4_TM4C/uart.c b/Target/Source/ARMCM4_TM4C/uart.c index 1ba8dfac..eef56ecb 100644 --- a/Target/Source/ARMCM4_TM4C/uart.c +++ b/Target/Source/ARMCM4_TM4C/uart.c @@ -127,7 +127,8 @@ blt_bool UartReceivePacket(blt_int8u *data) /* store the message length when received */ if (UartReceiveByte(&xcpCtoReqPacket[0]) == BLT_TRUE) { - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Source/ARMCM4_TM4C/usb.c b/Target/Source/ARMCM4_TM4C/usb.c index 96eaf947..4574fff2 100644 --- a/Target/Source/ARMCM4_TM4C/usb.c +++ b/Target/Source/ARMCM4_TM4C/usb.c @@ -204,7 +204,8 @@ blt_bool UsbReceivePacket(blt_int8u *data) /* store the message length when received */ if (UsbReceiveByte(&xcpCtoReqPacket[0]) == BLT_TRUE) { - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_USB_RX_MAX_DATA) ) { /* indicate that a cto packet is being received */ xcpCtoRxInProgress = BLT_TRUE; diff --git a/Target/Source/ARMCM4_XMC4/uart.c b/Target/Source/ARMCM4_XMC4/uart.c index fc83b41d..578f5543 100644 --- a/Target/Source/ARMCM4_XMC4/uart.c +++ b/Target/Source/ARMCM4_XMC4/uart.c @@ -153,7 +153,8 @@ blt_bool UartReceivePacket(blt_int8u *data) /* store the message length when received */ if (UartReceiveByte(&xcpCtoReqPacket[0]) == BLT_TRUE) { - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Source/HCS12/uart.c b/Target/Source/HCS12/uart.c index 6dd54229..4360b013 100644 --- a/Target/Source/HCS12/uart.c +++ b/Target/Source/HCS12/uart.c @@ -170,7 +170,8 @@ blt_bool UartReceivePacket(blt_int8u *data) /* store the message length when received */ if (UartReceiveByte(&xcpCtoReqPacket[0]) == BLT_TRUE) { - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet(); diff --git a/Target/Source/TRICORE_TC1798/uart.c b/Target/Source/TRICORE_TC1798/uart.c index 02c8d776..d3c90fba 100644 --- a/Target/Source/TRICORE_TC1798/uart.c +++ b/Target/Source/TRICORE_TC1798/uart.c @@ -179,7 +179,8 @@ blt_bool UartReceivePacket(blt_int8u *data) /* store the message length when received */ if (UartReceiveByte(&xcpCtoReqPacket[0]) == BLT_TRUE) { - if (xcpCtoReqPacket[0] > 0) + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_UART_RX_MAX_DATA) ) { /* store the start time */ xcpCtoRxStartTime = TimerGet();