summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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");