mirror of https://github.com/wolfSSL/wolfssh.git
Merge pull request #213 from JacobBarthelmeh/testing
be more lenient on CR with protocol exchangepull/255/head
commit
80760b5fc1
|
@ -1426,6 +1426,14 @@ static int GetInputText(WOLFSSH* ssh, byte** pEol)
|
||||||
eol = WSTRNSTR((const char*)ssh->inputBuffer.buffer, "\r\n",
|
eol = WSTRNSTR((const char*)ssh->inputBuffer.buffer, "\r\n",
|
||||||
ssh->inputBuffer.length);
|
ssh->inputBuffer.length);
|
||||||
|
|
||||||
|
/* section 4.2 in RFC 4253 states that can be lenient on the CR for
|
||||||
|
* interop with older or undocumented versions of SSH */
|
||||||
|
if (!eol) {
|
||||||
|
WLOG(WS_LOG_DEBUG, "Checking for old version of protocol exchange");
|
||||||
|
eol = WSTRNSTR((const char*)ssh->inputBuffer.buffer, "\n",
|
||||||
|
ssh->inputBuffer.length);
|
||||||
|
}
|
||||||
|
|
||||||
if (eol)
|
if (eol)
|
||||||
gotLine = 1;
|
gotLine = 1;
|
||||||
|
|
||||||
|
@ -2254,6 +2262,8 @@ static int DoKexInit(WOLFSSH* ssh, byte* buf, word32 len, word32* idx)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret == WS_SUCCESS) {
|
if (ret == WS_SUCCESS) {
|
||||||
|
byte SSH_PROTO_EOL_SZ = 2;
|
||||||
|
|
||||||
strSz = (word32)WSTRLEN(sshProtoIdStr) - SSH_PROTO_EOL_SZ;
|
strSz = (word32)WSTRLEN(sshProtoIdStr) - SSH_PROTO_EOL_SZ;
|
||||||
c32toa(strSz, scratchLen);
|
c32toa(strSz, scratchLen);
|
||||||
ret = wc_HashUpdate(&ssh->handshake->hash, enmhashId,
|
ret = wc_HashUpdate(&ssh->handshake->hash, enmhashId,
|
||||||
|
@ -5339,6 +5349,7 @@ int DoProtoId(WOLFSSH* ssh)
|
||||||
int ret;
|
int ret;
|
||||||
word32 idSz;
|
word32 idSz;
|
||||||
byte* eol;
|
byte* eol;
|
||||||
|
byte SSH_PROTO_EOL_SZ = 1;
|
||||||
|
|
||||||
if ( (ret = GetInputText(ssh, &eol)) < 0) {
|
if ( (ret = GetInputText(ssh, &eol)) < 0) {
|
||||||
WLOG(WS_LOG_DEBUG, "get input text failed");
|
WLOG(WS_LOG_DEBUG, "get input text failed");
|
||||||
|
@ -5367,6 +5378,9 @@ int DoProtoId(WOLFSSH* ssh)
|
||||||
ssh->clientOpenSSH = 1;
|
ssh->clientOpenSSH = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (*eol == '\r') {
|
||||||
|
SSH_PROTO_EOL_SZ++;
|
||||||
|
}
|
||||||
*eol = 0;
|
*eol = 0;
|
||||||
|
|
||||||
idSz = (word32)WSTRLEN((char*)ssh->inputBuffer.buffer);
|
idSz = (word32)WSTRLEN((char*)ssh->inputBuffer.buffer);
|
||||||
|
|
|
@ -123,7 +123,6 @@ enum {
|
||||||
#define SHA1_96_SZ 12
|
#define SHA1_96_SZ 12
|
||||||
#define UINT32_SZ 4
|
#define UINT32_SZ 4
|
||||||
#define SSH_PROTO_SZ 7 /* "SSH-2.0" */
|
#define SSH_PROTO_SZ 7 /* "SSH-2.0" */
|
||||||
#define SSH_PROTO_EOL_SZ 2 /* Just the CRLF */
|
|
||||||
#define AEAD_IMP_IV_SZ 4
|
#define AEAD_IMP_IV_SZ 4
|
||||||
#define AEAD_EXP_IV_SZ 8
|
#define AEAD_EXP_IV_SZ 8
|
||||||
#define AEAD_NONCE_SZ (AEAD_IMP_IV_SZ+AEAD_EXP_IV_SZ)
|
#define AEAD_NONCE_SZ (AEAD_IMP_IV_SZ+AEAD_EXP_IV_SZ)
|
||||||
|
|
Loading…
Reference in New Issue