Skip to content

Commit 638e430

Browse files
committed
WIP
1 parent 671fc52 commit 638e430

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed

src/internal.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -638,6 +638,13 @@ INLINE static int IsMessageAllowedServer(WOLFSSH *ssh, byte msg)
638638
#ifndef NO_WOLFSSH_CLIENT
639639
INLINE static int IsMessageAllowedClient(WOLFSSH *ssh, byte msg)
640640
{
641+
/* Transport Layer Generic messages are always allowed. */
642+
if (MSGIDLIMIT_TRANS_GEN(msg)) {
643+
return 1;
644+
}
645+
646+
if (ssh->service == SVC_USERAUTH) {}
647+
641648
/* Is KEX complete? */
642649
if (ssh->connectState < CONNECT_KEYED && ssh->handshake) {
643650
/* If expecting a specific message, and didn't receive it, error. */
@@ -648,6 +655,7 @@ INLINE static int IsMessageAllowedClient(WOLFSSH *ssh, byte msg)
648655
return 0;
649656
}
650657
ssh->handshake->expectMsgId = MSGID_NONE;
658+
return 1;
651659
}
652660
}
653661
/* Has client userauth started? */

wolfssh/internal.h

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -741,6 +741,7 @@ struct WOLFSSH {
741741
byte isKeying;
742742
byte authId; /* if using public key or password */
743743
byte supportedAuth[4]; /* supported auth IDs public key , password */
744+
byte service;
744745

745746
#ifdef WOLFSSH_SCP
746747
byte scpState;
@@ -1178,6 +1179,13 @@ enum ProcessReplyStates {
11781179
};
11791180

11801181

1182+
enum WS_ServiceTypes {
1183+
SVC_NONE,
1184+
SVC_USERAUTH,
1185+
SVC_CONNECTION,
1186+
};
1187+
1188+
11811189
enum WS_MessageIds {
11821190
MSGID_NONE = 0,
11831191
MSGID_DISCONNECT = 1,
@@ -1249,6 +1257,55 @@ enum WS_MessageIds {
12491257
* user auth messages, it sends them. (>50) */
12501258
#define MSGID_USERAUTH_RESTRICT 50
12511259

1260+
/* The following message ID ranges are described in RFC 5251, section 7. */
1261+
enum WS_MessageIdLimits {
1262+
/* Transport Layer Protocol: */
1263+
MSGIDLIMIT_TRANS_MIN = 1,
1264+
MSGIDLIMIT_TRANS_GEN_MIN = 1,
1265+
MSGIDLIMIT_TRANS_GEN_MAX = 19,
1266+
MSGIDLIMIT_TRANS_ALGO_MIN = 20,
1267+
MSGIDLIMIT_TRANS_ALGO_MAX = 29,
1268+
MSGIDLIMIT_TRANS_KEX_MIN = 30,
1269+
MSGIDLIMIT_TRANS_KEX_MAX = 49,
1270+
MSGIDLIMIT_TRANS_MAX = 49,
1271+
/* User Authentication Protocol: */
1272+
MSGIDLIMIT_AUTH_MIN = 50,
1273+
MSGIDLIMIT_AUTH_GEN_MIN = 50,
1274+
MSGIDLIMIT_AUTH_GEN_MAX = 59,
1275+
MSGIDLIMIT_AUTH_METH_MIN = 60,
1276+
MSGIDLIMIT_AUTH_METH_MAX = 79,
1277+
MSGIDLIMIT_AUTH_MAX = 79,
1278+
/* Connection Protocol: */
1279+
MSGIDLIMIT_CONN_MIN = 80,
1280+
MSGIDLIMIT_CONN_GEN_MIN = 80,
1281+
MSGIDLIMIT_CONN_GEN_MAX = 89,
1282+
MSGIDLIMIT_CONN_CHAN_MIN = 90,
1283+
MSGIDLIMIT_CONN_CHAN_MAX = 127,
1284+
MSGIDLIMIT_CONN_MAX = 127,
1285+
/* Reserved For Client Protocols: */
1286+
MSGIDLIMIT_RESERVED_MIN = 128,
1287+
MSGIDLIMIT_RESERVED_MAX = 191,
1288+
/* Local Extensions: */
1289+
MSGIDLIMIT_EXTENDED_MIN = 192,
1290+
MSGIDLIMIT_EXTENDED_MAX = 255,
1291+
};
1292+
1293+
/* Message ID bounds checking. */
1294+
#define MSGIDLIMIT_BOUND(x,name) \
1295+
((x) >= (MSGIDLIMIT_##name##_MIN) && (x) <= MSGIDLIMIT_##name##_MAX)
1296+
#define MSGIDLIMIT_TRANS(x) MSGIDLIMIT_BOUND((x),TRANS)
1297+
#define MSGIDLIMIT_TRANS_GEN(x) MSGIDLIMIT_BOUND((x),TRANS_GEN)
1298+
#define MSGIDLIMIT_TRANS_ALGO(x) MSGIDLIMIT_BOUND((x),TRANS_ALGO)
1299+
#define MSGIDLIMIT_TRANS_KEX(x) MSGIDLIMIT_BOUND((x),TRANS_KEX)
1300+
#define MSGIDLIMIT_AUTH(x) MSGIDLIMIT_BOUND((x),AUTH)
1301+
#define MSGIDLIMIT_AUTH_GEN(x) MSGIDLIMIT_BOUND((x),AUTH_GEN)
1302+
#define MSGIDLIMIT_AUTH_METH(x) MSGIDLIMIT_BOUND((x),AUTH_METH)
1303+
#define MSGIDLIMIT_CONN(x) MSGIDLIMIT_BOUND((x),CONN)
1304+
#define MSGIDLIMIT_CONN_GEN(x) MSGIDLIMIT_BOUND((x),CONN_GEN)
1305+
#define MSGIDLIMIT_CONN_CHAN(x) MSGIDLIMIT_BOUND((x),CONN_CHAN)
1306+
#define MSGIDLIMIT_RESERVED(x) MSGIDLIMIT_BOUND((x),RESERVED)
1307+
#define MSGIDLIMIT_EXTENDED(x) MSGIDLIMIT_BOUND((x),EXTENDED)
1308+
12521309

12531310
#define CHANNEL_EXTENDED_DATA_STDERR WOLFSSH_EXT_DATA_STDERR
12541311

0 commit comments

Comments
 (0)