diff options
author | Daiki Ueno <dueno@redhat.com> | 2020-03-27 09:53:38 +0100 |
---|---|---|
committer | Daiki Ueno <dueno@redhat.com> | 2020-04-21 16:56:42 +0200 |
commit | 5bba569b44b85b5aa126c1c56a549c9575856a9f (patch) | |
tree | 8b9f85fd64e8845f6766acacfcef1857717ba88c | |
parent | 6e2e00257ac495d46ebe67e59fc48b67f8701fb3 (diff) | |
download | gnutls-5bba569b44b85b5aa126c1c56a549c9575856a9f.tar.gz |
gnutls_session_ext_register: keep track of extension nametmp-ext-name
Previously it discarded the name argument, and that was making the
debug output awkward, e.g., running tests/tls-session-ext-register -v:
client|<4>| EXT[0x9cdc20]: Preparing extension ((null)/242) for 'client hello'
client|<4>| EXT[0x9cdc20]: Preparing extension ((null)/241) for 'client hello'
client|<4>| EXT[0x9cdc20]: Sending extension (null)/241 (2 bytes)
Signed-off-by: Daiki Ueno <dueno@redhat.com>
-rw-r--r-- | lib/hello_ext.c | 1 | ||||
-rw-r--r-- | lib/state.c | 2 | ||||
-rw-r--r-- | tests/tls-session-ext-register.c | 9 |
3 files changed, 12 insertions, 0 deletions
diff --git a/lib/hello_ext.c b/lib/hello_ext.c index 8052488366..dbe73fdeb3 100644 --- a/lib/hello_ext.c +++ b/lib/hello_ext.c @@ -898,6 +898,7 @@ gnutls_session_ext_register(gnutls_session_t session, return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR); memset(&tmp_mod, 0, sizeof(hello_ext_entry_st)); + tmp_mod.name = gnutls_strdup(name); tmp_mod.free_struct = 1; tmp_mod.tls_id = id; tmp_mod.gid = gid; diff --git a/lib/state.c b/lib/state.c index 98900c171f..8ba2cc4a32 100644 --- a/lib/state.c +++ b/lib/state.c @@ -692,6 +692,8 @@ void gnutls_deinit(gnutls_session_t session) _gnutls_free_datum(&session->internals.resumption_data); _gnutls_free_datum(&session->internals.dtls.dcookie); + for (i = 0; i < session->internals.rexts_size; i++) + gnutls_free(session->internals.rexts[i].name); gnutls_free(session->internals.rexts); gnutls_free(session->internals.post_handshake_cr_context.data); diff --git a/tests/tls-session-ext-register.c b/tests/tls-session-ext-register.c index 7e907f5e96..6e44b9e60e 100644 --- a/tests/tls-session-ext-register.c +++ b/tests/tls-session-ext-register.c @@ -152,6 +152,7 @@ static void client(int sd, const char *name, const char *prio, unsigned flags, u int ret; gnutls_session_t session; gnutls_certificate_credentials_t clientx509cred; + const char *ext_name; void *p; side = "client"; @@ -179,6 +180,14 @@ static void client(int sd, const char *name, const char *prio, unsigned flags, u if (ret < 0) myfail("client: register extension\n"); + ext_name = gnutls_ext_get_name2(session, TLSEXT_TYPE_IGN, GNUTLS_EXT_ANY); + if (ext_name == NULL || strcmp(ext_name, "ext_ign")) + myfail("client: retrieve name of extension %u\n", TLSEXT_TYPE_IGN); + + ext_name = gnutls_ext_get_name2(session, TLSEXT_TYPE_IGN, GNUTLS_EXT_APPLICATION); + if (ext_name) + myfail("client: retrieve name of extension %u (expected none)\n", TLSEXT_TYPE_IGN); + ret = gnutls_session_ext_register(session, "ext_client", TLSEXT_TYPE_SAMPLE, GNUTLS_EXT_TLS, ext_recv_client_params, ext_send_client_params, NULL, NULL, NULL, flags); if (ret < 0) myfail("client: register extension\n"); |