Skip to content

Commit 56189a3

Browse files
committed
KeyboardInteractive Fix
1. Snip out some extraneous states from the server handshake tracking for accept. 2. Change sending the keyboard interactive info response to a reaction to a request.
1 parent 24b7629 commit 56189a3

File tree

3 files changed

+4
-38
lines changed

3 files changed

+4
-38
lines changed

src/internal.c

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7913,12 +7913,7 @@ static int DoUserAuthSuccess(WOLFSSH* ssh,
79137913
return ret;
79147914
}
79157915

7916-
#ifdef WOLFSSH_KEYBOARD_INTERACTIVE
7917-
if (ssh->serverState == SERVER_USERAUTH_ACCEPT_KEYBOARD)
7918-
ssh->serverState = SERVER_USERAUTH_ACCEPT_KEYBOARD_DONE;
7919-
else
7920-
#endif
7921-
ssh->serverState = SERVER_USERAUTH_ACCEPT_DONE;
7916+
ssh->serverState = SERVER_USERAUTH_ACCEPT_DONE;
79227917

79237918
WLOG(WS_LOG_DEBUG, "Leaving DoUserAuthSuccess(), ret = %d", ret);
79247919
return ret;
@@ -7971,7 +7966,6 @@ static int DoUserAuthInfoRequest(WOLFSSH* ssh, byte* buf, word32 len,
79717966
if (ssh == NULL || buf == NULL || len == 0 || idx == NULL)
79727967
ret = WS_BAD_ARGUMENT;
79737968

7974-
79757969
if (ret == WS_SUCCESS) {
79767970
begin = *idx;
79777971
ret = GetStringAlloc(ssh->ctx->heap, (char**)&authName, buf, len,
@@ -8046,8 +8040,9 @@ static int DoUserAuthInfoRequest(WOLFSSH* ssh, byte* buf, word32 len,
80468040
WFREE(language, ssh->ctx->heap, DYNTYPE_STRING);
80478041
}
80488042

8049-
if (ret == WS_SUCCESS)
8050-
ssh->serverState = SERVER_USERAUTH_ACCEPT_KEYBOARD;
8043+
if (ret == WS_SUCCESS) {
8044+
ret = SendUserAuthKeyboardResponse(ssh);
8045+
}
80518046

80528047
WLOG(WS_LOG_DEBUG, "Leaving DoUserAuthInfoRequest(), ret = %d", ret);
80538048

src/ssh.c

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -890,30 +890,6 @@ int wolfSSH_connect(WOLFSSH* ssh)
890890
return WS_FATAL_ERROR;
891891
}
892892
}
893-
894-
#ifdef WOLFSSH_KEYBOARD_INTERACTIVE
895-
while (ssh->serverState == SERVER_USERAUTH_ACCEPT_KEYBOARD) {
896-
if ( (ssh->error = SendUserAuthKeyboardResponse(ssh)) <
897-
WS_SUCCESS) {
898-
WLOG(WS_LOG_DEBUG, connectError, "CLIENT_USERAUTH_SENT",
899-
ssh->error);
900-
return WS_FATAL_ERROR;
901-
}
902-
ssh->serverState = SERVER_USERAUTH_ACCEPT_KEYBOARD_NEXT;
903-
while (
904-
(ssh->serverState < SERVER_USERAUTH_ACCEPT_KEYBOARD_DONE) &&
905-
(ssh->serverState != SERVER_USERAUTH_ACCEPT_KEYBOARD) &&
906-
(ssh->serverState != SERVER_USERAUTH_ACCEPT_DONE)) {
907-
908-
if (DoReceive(ssh) < WS_SUCCESS) {
909-
WLOG(WS_LOG_DEBUG, connectError,
910-
"CLIENT_USERAUTH_SENT", ssh->error);
911-
return WS_FATAL_ERROR;
912-
}
913-
}
914-
}
915-
#endif
916-
917893
ssh->connectState = CONNECT_SERVER_USERAUTH_ACCEPT_DONE;
918894
WLOG(WS_LOG_DEBUG, connectState, "SERVER_USERAUTH_ACCEPT_DONE");
919895
NO_BREAK;

wolfssh/internal.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1164,11 +1164,6 @@ enum ServerStates {
11641164
SERVER_KEXINIT_DONE,
11651165
SERVER_USERAUTH_REQUEST_DONE,
11661166
SERVER_USERAUTH_ACCEPT_DONE,
1167-
#ifdef WOLFSSH_KEYBOARD_INTERACTIVE
1168-
SERVER_USERAUTH_ACCEPT_KEYBOARD,
1169-
SERVER_USERAUTH_ACCEPT_KEYBOARD_NEXT,
1170-
SERVER_USERAUTH_ACCEPT_KEYBOARD_DONE,
1171-
#endif
11721167
SERVER_CHANNEL_OPEN_DONE,
11731168
SERVER_DONE
11741169
};

0 commit comments

Comments
 (0)