diff --git a/src/internal.c b/src/internal.c index ae87690..be39398 100644 --- a/src/internal.c +++ b/src/internal.c @@ -1438,8 +1438,10 @@ static int GetInputData(WOLFSSH* ssh, word32 size) * buffer and resets idx to 0. */ if (inSz > maxLength) { - if (GrowBuffer(&ssh->inputBuffer, size, usedLength) < 0) - return WS_MEMORY_E; + if (GrowBuffer(&ssh->inputBuffer, size, usedLength) < 0) { + ssh->error = WS_MEMORY_E; + return WS_FATAL_ERROR; + } } /* Put buffer data at start if not there */ @@ -1458,21 +1460,27 @@ static int GetInputData(WOLFSSH* ssh, word32 size) do { in = Receive(ssh, ssh->inputBuffer.buffer + ssh->inputBuffer.length, inSz); - if (in == -1) - return WS_SOCKET_ERROR_E; + if (in == -1) { + ssh->error = WS_SOCKET_ERROR_E; + return WS_FATAL_ERROR; + } - if (in == WS_WANT_READ) - return WS_WANT_READ; + if (in == WS_WANT_READ) { + ssh->error = WS_WANT_READ; + return WS_FATAL_ERROR; + } - if (in > inSz) - return WS_RECV_OVERFLOW_E; + if (in > inSz) { + ssh->error = WS_RECV_OVERFLOW_E; + return WS_FATAL_ERROR; + } ssh->inputBuffer.length += in; inSz -= in; } while (ssh->inputBuffer.length < size); - return 0; + return WS_SUCCESS; } diff --git a/src/ssh.c b/src/ssh.c index f9df2ff..d3a2a45 100644 --- a/src/ssh.c +++ b/src/ssh.c @@ -484,7 +484,7 @@ int wolfSSH_connect(WOLFSSH* ssh) case CONNECT_CLIENT_KEXINIT_SENT: while (ssh->serverState < SERVER_KEXINIT_DONE) { - if ( (ssh->error = DoReceive(ssh)) < WS_SUCCESS) { + if (DoReceive(ssh) < WS_SUCCESS) { WLOG(WS_LOG_DEBUG, connectError, "CLIENT_KEXINIT_SENT", ssh->error); return WS_FATAL_ERROR; @@ -516,7 +516,7 @@ int wolfSSH_connect(WOLFSSH* ssh) case CONNECT_CLIENT_KEXDH_INIT_SENT: while (ssh->isKeying) { - if ( (ssh->error = DoReceive(ssh)) < WS_SUCCESS) { + if (DoReceive(ssh) < WS_SUCCESS) { WLOG(WS_LOG_DEBUG, connectError, "CLIENT_KEXDH_INIT_SENT", ssh->error); return WS_FATAL_ERROR; @@ -540,7 +540,7 @@ int wolfSSH_connect(WOLFSSH* ssh) case CONNECT_CLIENT_USERAUTH_REQUEST_SENT: while (ssh->serverState < SERVER_USERAUTH_REQUEST_DONE) { - if ( (ssh->error = DoReceive(ssh)) < WS_SUCCESS) { + if (DoReceive(ssh) < WS_SUCCESS) { WLOG(WS_LOG_DEBUG, connectError, "CLIENT_USERAUTH_REQUEST_SENT", ssh->error); return WS_FATAL_ERROR; @@ -565,7 +565,7 @@ int wolfSSH_connect(WOLFSSH* ssh) case CONNECT_CLIENT_USERAUTH_SENT: while (ssh->serverState < SERVER_USERAUTH_ACCEPT_DONE) { - if ( (ssh->error = DoReceive(ssh)) < WS_SUCCESS) { + if (DoReceive(ssh) < WS_SUCCESS) { WLOG(WS_LOG_DEBUG, connectError, "CLIENT_USERAUTH_SENT", ssh->error); return WS_FATAL_ERROR; @@ -606,7 +606,7 @@ int wolfSSH_connect(WOLFSSH* ssh) case CONNECT_CLIENT_CHANNEL_OPEN_SESSION_SENT: while (ssh->serverState < SERVER_CHANNEL_OPEN_DONE) { - if ( (ssh->error = DoReceive(ssh)) < WS_SUCCESS) { + if (DoReceive(ssh) < WS_SUCCESS) { WLOG(WS_LOG_DEBUG, connectError, "CLIENT_CHANNEL_OPEN_SESSION_SENT", ssh->error); return WS_FATAL_ERROR; @@ -633,7 +633,7 @@ int wolfSSH_connect(WOLFSSH* ssh) case CONNECT_CLIENT_CHANNEL_REQUEST_SENT: while (ssh->serverState < SERVER_DONE) { - if ( (ssh->error = DoReceive(ssh)) < WS_SUCCESS) { + if (DoReceive(ssh) < WS_SUCCESS) { WLOG(WS_LOG_DEBUG, connectError, "CLIENT_CHANNEL_REQUEST_SENT", ssh->error); return WS_FATAL_ERROR; diff --git a/src/wolfsftp.c b/src/wolfsftp.c index d09db88..4dead87 100644 --- a/src/wolfsftp.c +++ b/src/wolfsftp.c @@ -2994,7 +2994,7 @@ int wolfSSH_SFTP_connect(WOLFSSH* ssh) case SFTP_RECV: case SFTP_EXT: - if ((ssh->error = SFTP_ClientRecvInit(ssh)) != WS_SUCCESS) { + if (SFTP_ClientRecvInit(ssh) != WS_SUCCESS) { return WS_FATAL_ERROR; } ssh->sftpState = SFTP_DONE;