]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
handshake-checks: fix username comparison during rehandshake
authorJoshua Rogers <joshua@joshua.hu>
Wed, 18 Mar 2026 16:08:03 +0000 (17:08 +0100)
committerAlexander Sosedkin <asosedkin@redhat.com>
Wed, 29 Apr 2026 14:26:23 +0000 (16:26 +0200)
This is definitely a security issue
subverting the GNUTLS_ALLOW_ID_CHANGE protection,
but its real-life exploitability is under question.

Reported-by: Joshua Rogers of AISLE Research Team <joshua@joshua.hu>
Fixes: #1808
Signed-off-by: Joshua Rogers <joshua@joshua.hu>
lib/handshake-checks.c

index 5231046e84bd6353c37baabe400e62dd2159feed..ad92932d7b5f22c78293e7658cd97e8000fd6bb3 100644 (file)
@@ -80,10 +80,10 @@ int _gnutls_check_id_for_change(gnutls_session_t session)
 
                if (session->internals.saved_username &&
                    session->internals.saved_username_size != -1) {
-                       if (session->internals.saved_username_size ==
-                                   username_length &&
-                           strncmp(session->internals.saved_username, username,
-                                   username_length)) {
+                       if (session->internals.saved_username_size !=
+                                   username_length ||
+                           memcmp(session->internals.saved_username, username,
+                                  username_length)) {
                                _gnutls_debug_log(
                                        "Session's PSK username changed during rehandshake; aborting!\n");
                                return gnutls_assert_val(