]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
key_share: send illegal_parameter when parsing EC key share fails
authorDaiki Ueno <ueno@gnu.org>
Wed, 29 Jan 2025 02:57:44 +0000 (11:57 +0900)
committerDaiki Ueno <ueno@gnu.org>
Fri, 7 Feb 2025 05:21:29 +0000 (14:21 +0900)
When the received EC key share is malformed,
_gnutls_ecc_ansi_x962_import returns GNUTLS_E_PARSING_ERROR or
GNUTLS_E_MEMORY_ERROR, which maps to an internal_error alert. This
explicitly return GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER to send
illegal_parameter instead, in compliance with the RFC.

Signed-off-by: Daiki Ueno <ueno@gnu.org>
lib/ext/key_share.c

index 1ad97c2c81a7cd712bdc23b9211a0fac5a50dddc..4b9a99dd7457173aabecd79b625bf214e80675b5 100644 (file)
@@ -433,7 +433,8 @@ static int server_use_key_share_single(gnutls_session_t session,
                                                   &pub.params[ECC_X],
                                                   &pub.params[ECC_Y]);
                if (ret < 0)
-                       return gnutls_assert_val(ret);
+                       return gnutls_assert_val(
+                               GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER);
 
                pub.algo = group->pk;
                pub.curve = curve->id;
@@ -664,7 +665,8 @@ static int client_use_key_share_single(gnutls_session_t session,
                                                   &pub.params[ECC_X],
                                                   &pub.params[ECC_Y]);
                if (ret < 0)
-                       return gnutls_assert_val(ret);
+                       return gnutls_assert_val(
+                               GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER);
 
                pub.algo = group->pk;
                pub.curve = curve->id;