mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-01 03:34:39 +02:00
add paramter validation to SSL I/O calls
This commit is contained in:
26
src/ssl.c
26
src/ssl.c
@@ -425,6 +425,9 @@ int CyaSSL_write(CYASSL* ssl, const void* data, int sz)
|
||||
|
||||
CYASSL_ENTER("SSL_write()");
|
||||
|
||||
if (ssl == NULL || data == NULL || sz < 0)
|
||||
return BAD_FUNC_ARG;
|
||||
|
||||
#ifdef HAVE_ERRNO_H
|
||||
errno = 0;
|
||||
#endif
|
||||
@@ -446,6 +449,9 @@ static int CyaSSL_read_internal(CYASSL* ssl, void* data, int sz, int peek)
|
||||
|
||||
CYASSL_ENTER("CyaSSL_read_internal()");
|
||||
|
||||
if (ssl == NULL || data == NULL || sz < 0)
|
||||
return BAD_FUNC_ARG;
|
||||
|
||||
#ifdef HAVE_ERRNO_H
|
||||
errno = 0;
|
||||
#endif
|
||||
@@ -611,10 +617,15 @@ int CyaSSL_CTX_UseTruncatedHMAC(CYASSL_CTX* ctx)
|
||||
int CyaSSL_send(CYASSL* ssl, const void* data, int sz, int flags)
|
||||
{
|
||||
int ret;
|
||||
int oldFlags = ssl->wflags;
|
||||
int oldFlags;
|
||||
|
||||
CYASSL_ENTER("CyaSSL_send()");
|
||||
|
||||
if (ssl == NULL || data == NULL || sz < 0)
|
||||
return BAD_FUNC_ARG;
|
||||
|
||||
oldFlags = ssl->wflags;
|
||||
|
||||
ssl->wflags = flags;
|
||||
ret = CyaSSL_write(ssl, data, sz);
|
||||
ssl->wflags = oldFlags;
|
||||
@@ -628,10 +639,15 @@ int CyaSSL_send(CYASSL* ssl, const void* data, int sz, int flags)
|
||||
int CyaSSL_recv(CYASSL* ssl, void* data, int sz, int flags)
|
||||
{
|
||||
int ret;
|
||||
int oldFlags = ssl->rflags;
|
||||
int oldFlags;
|
||||
|
||||
CYASSL_ENTER("CyaSSL_recv()");
|
||||
|
||||
if (ssl == NULL || data == NULL || sz < 0)
|
||||
return BAD_FUNC_ARG;
|
||||
|
||||
oldFlags = ssl->rflags;
|
||||
|
||||
ssl->rflags = flags;
|
||||
ret = CyaSSL_read(ssl, data, sz);
|
||||
ssl->rflags = oldFlags;
|
||||
@@ -678,9 +694,13 @@ int CyaSSL_shutdown(CYASSL* ssl)
|
||||
int CyaSSL_get_error(CYASSL* ssl, int ret)
|
||||
{
|
||||
CYASSL_ENTER("SSL_get_error");
|
||||
CYASSL_LEAVE("SSL_get_error", ssl->error);
|
||||
|
||||
if (ret > 0)
|
||||
return SSL_ERROR_NONE;
|
||||
if (ssl == NULL)
|
||||
return BAD_FUNC_ARG;
|
||||
|
||||
CYASSL_LEAVE("SSL_get_error", ssl->error);
|
||||
|
||||
/* make sure converted types are handled in SetErrorString() too */
|
||||
if (ssl->error == WANT_READ)
|
||||
|
Reference in New Issue
Block a user