From 17e34b265eb204d2e5b9df8308cf303b30431635 Mon Sep 17 00:00:00 2001 From: Yosuke Shimizu Date: Fri, 8 May 2026 16:33:02 +0900 Subject: [PATCH 1/3] Fix mac comparison in VerifyMac --- src/internal.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/internal.c b/src/internal.c index b0e264e37..0395e2c51 100644 --- a/src/internal.c +++ b/src/internal.c @@ -10447,7 +10447,7 @@ static INLINE int VerifyMac(WOLFSSH* ssh, const byte* in, word32 inSz, ret = wc_HmacUpdate(&hmac, in, inSz); if (ret == WS_SUCCESS) ret = wc_HmacFinal(&hmac, checkMac); - if (ConstantCompare(checkMac, mac, ssh->peerMacSz) != 0) + if (ret == WS_SUCCESS && ConstantCompare(checkMac, mac, ssh->peerMacSz) != 0) ret = WS_VERIFY_MAC_E; break; @@ -10460,7 +10460,7 @@ static INLINE int VerifyMac(WOLFSSH* ssh, const byte* in, word32 inSz, ret = wc_HmacUpdate(&hmac, in, inSz); if (ret == WS_SUCCESS) ret = wc_HmacFinal(&hmac, checkMac); - if (ConstantCompare(checkMac, mac, ssh->peerMacSz) != 0) + if (ret == WS_SUCCESS && ConstantCompare(checkMac, mac, ssh->peerMacSz) != 0) ret = WS_VERIFY_MAC_E; break; @@ -10473,7 +10473,7 @@ static INLINE int VerifyMac(WOLFSSH* ssh, const byte* in, word32 inSz, ret = wc_HmacUpdate(&hmac, in, inSz); if (ret == WS_SUCCESS) ret = wc_HmacFinal(&hmac, checkMac); - if (ConstantCompare(checkMac, mac, ssh->peerMacSz) != 0) + if (ret == WS_SUCCESS && ConstantCompare(checkMac, mac, ssh->peerMacSz) != 0) ret = WS_VERIFY_MAC_E; break; From a0be0a1fba109be42556e6559375101556334d82 Mon Sep 17 00:00:00 2001 From: Yosuke Shimizu Date: Fri, 8 May 2026 16:39:49 +0900 Subject: [PATCH 2/3] Delete unnecessary statement --- src/internal.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/internal.c b/src/internal.c index 0395e2c51..cdc4308c4 100644 --- a/src/internal.c +++ b/src/internal.c @@ -1904,7 +1904,6 @@ static int GetOpenSshKey(WS_KeySignature *key, word32 subStrSz = 0, subIdx = 0, check1 = 0, check2 = ~0; byte keyId; - idx = 0; ret = GetUint32(&check1, str, strSz, &subIdx); /* checkint 1 */ if (ret == WS_SUCCESS) ret = GetUint32(&check2, str, strSz, &subIdx); /* checkint 2 */ From 4e236e5c25650bdad67fe2c78eac926aff2ca9e7 Mon Sep 17 00:00:00 2001 From: Yosuke Shimizu Date: Fri, 8 May 2026 16:50:55 +0900 Subject: [PATCH 3/3] Fix cursor mode handling --- src/wolfterm.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/wolfterm.c b/src/wolfterm.c index e7abe907e..aaa682949 100644 --- a/src/wolfterm.c +++ b/src/wolfterm.c @@ -467,8 +467,12 @@ static int wolfSSH_DoControlSeq(WOLFSSH* ssh, WOLFSSH_HANDLE handle, byte* buf, switch (c) { case 'H': /* move cursor to indicated row and column -1 to account * for 1,1 on linux vs 0,0 on windows */ - wolfSSH_CursorMove(handle, args[1] - OFST, args[0] - OFST, 1); + { + word32 row = (args[0] > 0) ? args[0] : 1; + word32 col = (args[1] > 0) ? args[1] : 1; + wolfSSH_CursorMove(handle, col - OFST, row - OFST, 1); break; + } case 'C': /* move cursor right */ wolfSSH_CursorMove(handle, args[0], 0, 0);