mirror of https://github.com/ARMmbed/mbed-os.git
STM32: HAL smartcard, fix memory corruption in Receive
Re-casting with tmp the uint8_t* pData pointer to uint16_t* brings a memory corruption and typically can corrupt the size parameter. This is fixed with this commit. STM32 Internal ticket reference : 39116pull/5505/head
parent
1394bf95f1
commit
be42c6de55
|
@ -500,7 +500,6 @@ HAL_StatusTypeDef HAL_SMARTCARD_Transmit(SMARTCARD_HandleTypeDef *hsc, uint8_t *
|
|||
*/
|
||||
HAL_StatusTypeDef HAL_SMARTCARD_Receive(SMARTCARD_HandleTypeDef *hsc, uint8_t *pData, uint16_t Size, uint32_t Timeout)
|
||||
{
|
||||
uint16_t* tmp;
|
||||
uint32_t tickstart = 0U;
|
||||
|
||||
if(hsc->RxState == HAL_SMARTCARD_STATE_READY)
|
||||
|
@ -530,8 +529,7 @@ HAL_StatusTypeDef HAL_SMARTCARD_Receive(SMARTCARD_HandleTypeDef *hsc, uint8_t *p
|
|||
{
|
||||
return HAL_TIMEOUT;
|
||||
}
|
||||
tmp = (uint16_t*) pData;
|
||||
*tmp = (uint8_t)(hsc->Instance->DR & (uint8_t)0xFF);
|
||||
*pData = (uint8_t)(hsc->Instance->DR & (uint8_t)0xFF);
|
||||
pData +=1U;
|
||||
}
|
||||
|
||||
|
|
|
@ -496,7 +496,6 @@ HAL_StatusTypeDef HAL_SMARTCARD_Transmit(SMARTCARD_HandleTypeDef *hsc, uint8_t *
|
|||
*/
|
||||
HAL_StatusTypeDef HAL_SMARTCARD_Receive(SMARTCARD_HandleTypeDef *hsc, uint8_t *pData, uint16_t Size, uint32_t Timeout)
|
||||
{
|
||||
uint16_t* tmp;
|
||||
uint32_t tickstart = 0U;
|
||||
|
||||
if(hsc->RxState == HAL_SMARTCARD_STATE_READY)
|
||||
|
@ -526,8 +525,7 @@ HAL_StatusTypeDef HAL_SMARTCARD_Receive(SMARTCARD_HandleTypeDef *hsc, uint8_t *p
|
|||
{
|
||||
return HAL_TIMEOUT;
|
||||
}
|
||||
tmp = (uint16_t*) pData;
|
||||
*tmp = (uint8_t)(hsc->Instance->DR & (uint8_t)0xFF);
|
||||
*pData = (uint8_t)(hsc->Instance->DR & (uint8_t)0xFF);
|
||||
pData +=1U;
|
||||
}
|
||||
|
||||
|
|
|
@ -497,7 +497,6 @@ HAL_StatusTypeDef HAL_SMARTCARD_Transmit(SMARTCARD_HandleTypeDef *hsc, uint8_t *
|
|||
*/
|
||||
HAL_StatusTypeDef HAL_SMARTCARD_Receive(SMARTCARD_HandleTypeDef *hsc, uint8_t *pData, uint16_t Size, uint32_t Timeout)
|
||||
{
|
||||
uint16_t* tmp;
|
||||
uint32_t tickstart = 0U;
|
||||
|
||||
if(hsc->RxState == HAL_SMARTCARD_STATE_READY)
|
||||
|
@ -527,8 +526,7 @@ HAL_StatusTypeDef HAL_SMARTCARD_Receive(SMARTCARD_HandleTypeDef *hsc, uint8_t *p
|
|||
{
|
||||
return HAL_TIMEOUT;
|
||||
}
|
||||
tmp = (uint16_t*) pData;
|
||||
*tmp = (uint8_t)(hsc->Instance->DR & (uint8_t)0xFF);
|
||||
*pData = (uint8_t)(hsc->Instance->DR & (uint8_t)0xFF);
|
||||
pData +=1U;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue