mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-12-16 08:35:17 -05:00
Add checks in FreeRTOS_Socket.c (#104)
* Add fail-safes to FreeRTOS_Socket.c * Use all 'pd' errors * Correction after Hein's comments * Correction after Hein's comments v2 * Changes after Hein's comments * Update after Gary's comments
This commit is contained in:
parent
a9b2aac4e9
commit
d5fedeaa96
1 changed files with 25 additions and 7 deletions
|
|
@ -1396,7 +1396,11 @@ FreeRTOS_Socket_t *pxSocket;
|
|||
( void ) lLevel;
|
||||
( void ) uxOptionLength;
|
||||
|
||||
configASSERT( xSocket != NULL );
|
||||
if( ( pxSocket == NULL ) || ( pxSocket == FREERTOS_INVALID_SOCKET ) )
|
||||
{
|
||||
xReturn = -pdFREERTOS_ERRNO_EINVAL;
|
||||
return xReturn;
|
||||
}
|
||||
|
||||
switch( lOptionName )
|
||||
{
|
||||
|
|
@ -2200,7 +2204,12 @@ void vSocketWakeUpUser( FreeRTOS_Socket_t *pxSocket )
|
|||
{
|
||||
BaseType_t xResult = 0;
|
||||
|
||||
if( prvValidSocket( pxSocket, FREERTOS_IPPROTO_TCP, pdFALSE ) == pdFALSE )
|
||||
if( pxAddress == NULL )
|
||||
{
|
||||
/* NULL address passed to the function. Invalid value. */
|
||||
xResult = -pdFREERTOS_ERRNO_EINVAL;
|
||||
}
|
||||
else if( prvValidSocket( pxSocket, FREERTOS_IPPROTO_TCP, pdFALSE ) == pdFALSE )
|
||||
{
|
||||
/* Not a valid socket or wrong type */
|
||||
xResult = -pdFREERTOS_ERRNO_EBADF;
|
||||
|
|
@ -2271,7 +2280,7 @@ void vSocketWakeUpUser( FreeRTOS_Socket_t *pxSocket )
|
|||
FreeRTOS_Socket_t *pxSocket = ( FreeRTOS_Socket_t* ) xClientSocket;
|
||||
TickType_t xRemainingTime;
|
||||
BaseType_t xTimed = pdFALSE;
|
||||
BaseType_t xResult;
|
||||
BaseType_t xResult = -pdFREERTOS_ERRNO_EINVAL;
|
||||
TimeOut_t xTimeOut;
|
||||
|
||||
( void ) xAddressLength;
|
||||
|
|
@ -2484,6 +2493,12 @@ void vSocketWakeUpUser( FreeRTOS_Socket_t *pxSocket )
|
|||
{
|
||||
xByteCount = -pdFREERTOS_ERRNO_EINVAL;
|
||||
}
|
||||
else if( ( ( ( uint32_t ) xFlags & ( uint32_t ) FREERTOS_ZERO_COPY ) != 0U ) &&
|
||||
( pvBuffer == NULL ) )
|
||||
{
|
||||
/* In zero-copy mode, pvBuffer is a pointer to a pointer ( not NULL ). */
|
||||
xByteCount = -pdFREERTOS_ERRNO_EINVAL;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( pxSocket->u.xTCP.rxStream != NULL )
|
||||
|
|
@ -2746,7 +2761,7 @@ void vSocketWakeUpUser( FreeRTOS_Socket_t *pxSocket )
|
|||
*/
|
||||
BaseType_t FreeRTOS_send( Socket_t xSocket, const void *pvBuffer, size_t uxDataLength, BaseType_t xFlags )
|
||||
{
|
||||
BaseType_t xByteCount;
|
||||
BaseType_t xByteCount = -pdFREERTOS_ERRNO_EINVAL;
|
||||
BaseType_t xBytesLeft;
|
||||
FreeRTOS_Socket_t *pxSocket = ( FreeRTOS_Socket_t * ) xSocket;
|
||||
TickType_t xRemainingTime;
|
||||
|
|
@ -2759,7 +2774,10 @@ void vSocketWakeUpUser( FreeRTOS_Socket_t *pxSocket )
|
|||
may be used in future versions. */
|
||||
( void ) xFlags;
|
||||
|
||||
xByteCount = ( BaseType_t ) prvTCPSendCheck( pxSocket, uxDataLength );
|
||||
if( pvBuffer != NULL )
|
||||
{
|
||||
xByteCount = ( BaseType_t ) prvTCPSendCheck( pxSocket, uxDataLength );
|
||||
}
|
||||
|
||||
if( xByteCount > 0 )
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue