mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2026-05-12 11:42:57 -04:00
fix: prevent integer overflow in stream buffer size calculations
Signed-off-by: Srikanth Patchava <spatchava@meta.com>
This commit is contained in:
parent
5113496d41
commit
bf268c5984
1 changed files with 12 additions and 17 deletions
|
|
@ -767,21 +767,19 @@ size_t xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer )
|
|||
do
|
||||
{
|
||||
xOriginalTail = pxStreamBuffer->xTail;
|
||||
xSpace = pxStreamBuffer->xLength + pxStreamBuffer->xTail;
|
||||
xSpace -= pxStreamBuffer->xHead;
|
||||
|
||||
if( pxStreamBuffer->xTail >= pxStreamBuffer->xHead )
|
||||
{
|
||||
xSpace = pxStreamBuffer->xTail - pxStreamBuffer->xHead;
|
||||
}
|
||||
else
|
||||
{
|
||||
xSpace = ( pxStreamBuffer->xLength - pxStreamBuffer->xHead ) + pxStreamBuffer->xTail;
|
||||
}
|
||||
} while( xOriginalTail != pxStreamBuffer->xTail );
|
||||
|
||||
xSpace -= ( size_t ) 1;
|
||||
|
||||
if( xSpace >= pxStreamBuffer->xLength )
|
||||
{
|
||||
xSpace -= pxStreamBuffer->xLength;
|
||||
}
|
||||
else
|
||||
{
|
||||
mtCOVERAGE_TEST_MARKER();
|
||||
}
|
||||
|
||||
traceRETURN_xStreamBufferSpacesAvailable( xSpace );
|
||||
|
||||
return xSpace;
|
||||
|
|
@ -1571,16 +1569,13 @@ static size_t prvBytesInBuffer( const StreamBuffer_t * const pxStreamBuffer )
|
|||
/* Returns the distance between xTail and xHead. */
|
||||
size_t xCount;
|
||||
|
||||
xCount = pxStreamBuffer->xLength + pxStreamBuffer->xHead;
|
||||
xCount -= pxStreamBuffer->xTail;
|
||||
|
||||
if( xCount >= pxStreamBuffer->xLength )
|
||||
if( pxStreamBuffer->xHead >= pxStreamBuffer->xTail )
|
||||
{
|
||||
xCount -= pxStreamBuffer->xLength;
|
||||
xCount = pxStreamBuffer->xHead - pxStreamBuffer->xTail;
|
||||
}
|
||||
else
|
||||
{
|
||||
mtCOVERAGE_TEST_MARKER();
|
||||
xCount = ( pxStreamBuffer->xLength - pxStreamBuffer->xTail ) + pxStreamBuffer->xHead;
|
||||
}
|
||||
|
||||
return xCount;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue