summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaiki Ueno <dueno@redhat.com>2020-03-27 09:53:38 +0100
committerDaiki Ueno <dueno@redhat.com>2020-04-21 16:56:42 +0200
commit5bba569b44b85b5aa126c1c56a549c9575856a9f (patch)
tree8b9f85fd64e8845f6766acacfcef1857717ba88c
parent6e2e00257ac495d46ebe67e59fc48b67f8701fb3 (diff)
downloadgnutls-tmp-ext-name.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.c1
-rw-r--r--lib/state.c2
-rw-r--r--tests/tls-session-ext-register.c9
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");