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
|
do
|
||||||
{
|
{
|
||||||
xOriginalTail = pxStreamBuffer->xTail;
|
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 );
|
} while( xOriginalTail != pxStreamBuffer->xTail );
|
||||||
|
|
||||||
xSpace -= ( size_t ) 1;
|
xSpace -= ( size_t ) 1;
|
||||||
|
|
||||||
if( xSpace >= pxStreamBuffer->xLength )
|
|
||||||
{
|
|
||||||
xSpace -= pxStreamBuffer->xLength;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mtCOVERAGE_TEST_MARKER();
|
|
||||||
}
|
|
||||||
|
|
||||||
traceRETURN_xStreamBufferSpacesAvailable( xSpace );
|
traceRETURN_xStreamBufferSpacesAvailable( xSpace );
|
||||||
|
|
||||||
return xSpace;
|
return xSpace;
|
||||||
|
|
@ -1571,16 +1569,13 @@ static size_t prvBytesInBuffer( const StreamBuffer_t * const pxStreamBuffer )
|
||||||
/* Returns the distance between xTail and xHead. */
|
/* Returns the distance between xTail and xHead. */
|
||||||
size_t xCount;
|
size_t xCount;
|
||||||
|
|
||||||
xCount = pxStreamBuffer->xLength + pxStreamBuffer->xHead;
|
if( pxStreamBuffer->xHead >= pxStreamBuffer->xTail )
|
||||||
xCount -= pxStreamBuffer->xTail;
|
|
||||||
|
|
||||||
if( xCount >= pxStreamBuffer->xLength )
|
|
||||||
{
|
{
|
||||||
xCount -= pxStreamBuffer->xLength;
|
xCount = pxStreamBuffer->xHead - pxStreamBuffer->xTail;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mtCOVERAGE_TEST_MARKER();
|
xCount = ( pxStreamBuffer->xLength - pxStreamBuffer->xTail ) + pxStreamBuffer->xHead;
|
||||||
}
|
}
|
||||||
|
|
||||||
return xCount;
|
return xCount;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue