fix: prevent integer overflow in stream buffer size calculations

Signed-off-by: Srikanth Patchava <spatchava@meta.com>
This commit is contained in:
Srikanth Patchava 2026-04-25 01:34:00 -07:00
parent 5113496d41
commit bf268c5984
No known key found for this signature in database
GPG key ID: B904FC2A60B7438D

View file

@ -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;