From f102df96b86ba3658aa2a6594fbffd6c1e2ec309 Mon Sep 17 00:00:00 2001 From: Artem Boldariev Date: Thu, 22 Dec 2022 19:54:16 +0200 Subject: [PATCH 1/2] Rename isc_tlsctx_cache_new() -> isc_tlsctx_cache_create() Additionally to renaming, it changes the function definition so that it accepts a pointer to pointer instead of returning a pointer to the new object. It is mostly done to make it in line with other functions in the module. --- bin/dig/dighost.c | 2 +- bin/named/server.c | 4 ++-- bin/nsupdate/nsupdate.c | 2 +- lib/isc/include/isc/tls.h | 7 ++++--- lib/isc/tls.c | 7 ++++--- tests/dns/dispatch_test.c | 2 +- 6 files changed, 13 insertions(+), 11 deletions(-) diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c index 217dd3e6f8..41a001054b 100644 --- a/bin/dig/dighost.c +++ b/bin/dig/dighost.c @@ -630,7 +630,7 @@ make_empty_lookup(void) { ISC_LIST_INIT(looknew->q); ISC_LIST_INIT(looknew->my_server_list); - looknew->tls_ctx_cache = isc_tlsctx_cache_new(mctx); + isc_tlsctx_cache_create(mctx, &looknew->tls_ctx_cache); isc_refcount_init(&looknew->references, 1); diff --git a/bin/named/server.c b/bin/named/server.c index 3027bafe75..7019256dd3 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -8448,13 +8448,13 @@ load_configuration(const char *filename, named_server_t *server, isc_tlsctx_cache_detach(&server->tlsctx_server_cache); } - server->tlsctx_server_cache = isc_tlsctx_cache_new(named_g_mctx); + isc_tlsctx_cache_create(named_g_mctx, &server->tlsctx_server_cache); if (server->tlsctx_client_cache != NULL) { isc_tlsctx_cache_detach(&server->tlsctx_client_cache); } - server->tlsctx_client_cache = isc_tlsctx_cache_new(named_g_mctx); + isc_tlsctx_cache_create(named_g_mctx, &server->tlsctx_client_cache); dns_zonemgr_set_tlsctx_cache(server->zonemgr, server->tlsctx_client_cache); diff --git a/bin/nsupdate/nsupdate.c b/bin/nsupdate/nsupdate.c index de98154ef0..55c1ae343d 100644 --- a/bin/nsupdate/nsupdate.c +++ b/bin/nsupdate/nsupdate.c @@ -967,7 +967,7 @@ setup_system(void) { } transport_list = dns_transport_list_new(gmctx); - tls_ctx_cache = isc_tlsctx_cache_new(gmctx); + isc_tlsctx_cache_create(gmctx, &tls_ctx_cache); if (tls_client_key_file == NULL) { result = create_name("tls-non-auth-client", namedata, diff --git a/lib/isc/include/isc/tls.h b/lib/isc/include/isc/tls.h index 24577ec13d..113d603229 100644 --- a/lib/isc/include/isc/tls.h +++ b/lib/isc/include/isc/tls.h @@ -466,13 +466,14 @@ typedef enum { } isc_tlsctx_cache_transport_t; /*%< TLS context cache transport type values. */ -isc_tlsctx_cache_t * -isc_tlsctx_cache_new(isc_mem_t *mctx); +void +isc_tlsctx_cache_create(isc_mem_t *mctx, isc_tlsctx_cache_t **cachep); /*%< * Create a new TLS context cache object. * * Requires: - *\li 'mctx' is a valid memory context. + *\li 'mctx' is a valid memory context; + *\li 'cachep' is a valid pointer to a pointer which must be equal to NULL. */ void diff --git a/lib/isc/tls.c b/lib/isc/tls.c index a7d9a93332..6a9605928c 100644 --- a/lib/isc/tls.c +++ b/lib/isc/tls.c @@ -1174,10 +1174,11 @@ struct isc_tlsctx_cache { isc_ht_t *data; }; -isc_tlsctx_cache_t * -isc_tlsctx_cache_new(isc_mem_t *mctx) { +void +isc_tlsctx_cache_create(isc_mem_t *mctx, isc_tlsctx_cache_t **cachep) { isc_tlsctx_cache_t *nc; + REQUIRE(cachep != NULL && *cachep == NULL); nc = isc_mem_get(mctx, sizeof(*nc)); *nc = (isc_tlsctx_cache_t){ .magic = TLSCTX_CACHE_MAGIC }; @@ -1187,7 +1188,7 @@ isc_tlsctx_cache_new(isc_mem_t *mctx) { isc_ht_init(&nc->data, mctx, 5, ISC_HT_CASE_SENSITIVE); isc_rwlock_init(&nc->rwlock, 0, 0); - return (nc); + *cachep = nc; } void diff --git a/tests/dns/dispatch_test.c b/tests/dns/dispatch_test.c index 649166bf25..ed046db9f1 100644 --- a/tests/dns/dispatch_test.c +++ b/tests/dns/dispatch_test.c @@ -181,7 +181,7 @@ setup_test(void **state) { testdata.region.length = sizeof(testdata.rbuf); memset(testdata.message, 0, sizeof(testdata.message)); - tls_tlsctx_client_cache = isc_tlsctx_cache_new(mctx); + isc_tlsctx_cache_create(mctx, &tls_tlsctx_client_cache); if (isc_tlsctx_createserver(NULL, NULL, &tls_listen_tlsctx) != ISC_R_SUCCESS) From 7962e7f5757f77366bbcc4350ae43e5c0e4044c0 Mon Sep 17 00:00:00 2001 From: Artem Boldariev Date: Thu, 22 Dec 2022 20:04:22 +0200 Subject: [PATCH 2/2] tlsctx_client_session_cache_new() -> tlsctx_client_session_create() Additionally to renaming, it changes the function definition so that it accepts a pointer to pointer instead of returning a pointer to the new object. It is mostly done to make it in line with other functions in the module. --- bin/dig/dighost.c | 6 +++--- lib/dns/transport.c | 5 +++-- lib/isc/include/isc/tls.h | 8 +++++--- lib/isc/tls.c | 10 ++++++---- tests/isc/doh_test.c | 5 +++-- tests/isc/netmgr_common.c | 5 +++-- 6 files changed, 23 insertions(+), 16 deletions(-) diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c index 41a001054b..a915fef731 100644 --- a/bin/dig/dighost.c +++ b/bin/dig/dighost.c @@ -2880,9 +2880,9 @@ get_create_tls_context(dig_query_t *query, const bool is_https, } #endif /* HAVE_LIBNGHTTP2 */ - sess_cache = isc_tlsctx_client_session_cache_new( - mctx, ctx, - ISC_TLSCTX_CLIENT_SESSION_CACHE_DEFAULT_SIZE); + isc_tlsctx_client_session_cache_create( + mctx, ctx, ISC_TLSCTX_CLIENT_SESSION_CACHE_DEFAULT_SIZE, + &sess_cache); result = isc_tlsctx_cache_add( query->lookup->tls_ctx_cache, tlsctxname, transport, diff --git a/lib/dns/transport.c b/lib/dns/transport.c index c565b972ca..9c6a123081 100644 --- a/lib/dns/transport.c +++ b/lib/dns/transport.c @@ -498,9 +498,10 @@ dns_transport_get_tlsctx(dns_transport_t *transport, const isc_sockaddr_t *peer, isc_tlsctx_enable_dot_client_alpn(tlsctx); - sess_cache = isc_tlsctx_client_session_cache_new( + isc_tlsctx_client_session_cache_create( mctx, tlsctx, - ISC_TLSCTX_CLIENT_SESSION_CACHE_DEFAULT_SIZE); + ISC_TLSCTX_CLIENT_SESSION_CACHE_DEFAULT_SIZE, + &sess_cache); found_store = NULL; result = isc_tlsctx_cache_add(tlsctx_cache, tlsname, diff --git a/lib/isc/include/isc/tls.h b/lib/isc/include/isc/tls.h index 113d603229..6da0361a1f 100644 --- a/lib/isc/include/isc/tls.h +++ b/lib/isc/include/isc/tls.h @@ -320,9 +320,10 @@ typedef struct isc_tlsctx_client_session_cache isc_tlsctx_client_session_cache_t * comparable to or surpass the size of a typical DNS message. */ -isc_tlsctx_client_session_cache_t * -isc_tlsctx_client_session_cache_new(isc_mem_t *mctx, isc_tlsctx_t *ctx, - const size_t max_entries); +void +isc_tlsctx_client_session_cache_create( + isc_mem_t *mctx, isc_tlsctx_t *ctx, const size_t max_entries, + isc_tlsctx_client_session_cache_t **cachep); /*%< * Create a new TLS client session cache object. * @@ -330,6 +331,7 @@ isc_tlsctx_client_session_cache_new(isc_mem_t *mctx, isc_tlsctx_t *ctx, *\li 'mctx' is a valid memory context object; *\li 'ctx' is a valid TLS context object; *\li 'max_entries' is a positive number; + *\li 'cachep' is a valid pointer to a pointer which must be equal to NULL. */ void diff --git a/lib/isc/tls.c b/lib/isc/tls.c index 6a9605928c..8c4768c46b 100644 --- a/lib/isc/tls.c +++ b/lib/isc/tls.c @@ -1465,13 +1465,15 @@ struct isc_tlsctx_client_session_cache { isc_mutex_t lock; }; -isc_tlsctx_client_session_cache_t * -isc_tlsctx_client_session_cache_new(isc_mem_t *mctx, isc_tlsctx_t *ctx, - const size_t max_entries) { +void +isc_tlsctx_client_session_cache_create( + isc_mem_t *mctx, isc_tlsctx_t *ctx, const size_t max_entries, + isc_tlsctx_client_session_cache_t **cachep) { isc_tlsctx_client_session_cache_t *nc; REQUIRE(ctx != NULL); REQUIRE(max_entries > 0); + REQUIRE(cachep != NULL && *cachep == NULL); nc = isc_mem_get(mctx, sizeof(*nc)); @@ -1486,7 +1488,7 @@ isc_tlsctx_client_session_cache_new(isc_mem_t *mctx, isc_tlsctx_t *ctx, nc->magic = TLSCTX_CLIENT_SESSION_CACHE_MAGIC; - return (nc); + *cachep = nc; } void diff --git a/tests/isc/doh_test.c b/tests/isc/doh_test.c index fca204c307..c1e08b2071 100644 --- a/tests/isc/doh_test.c +++ b/tests/isc/doh_test.c @@ -319,9 +319,10 @@ setup_test(void **state) { client_tlsctx = NULL; isc_tlsctx_createclient(&client_tlsctx); isc_tlsctx_enable_http2client_alpn(client_tlsctx); - client_sess_cache = isc_tlsctx_client_session_cache_new( + isc_tlsctx_client_session_cache_create( mctx, client_tlsctx, - ISC_TLSCTX_CLIENT_SESSION_CACHE_DEFAULT_SIZE); + ISC_TLSCTX_CLIENT_SESSION_CACHE_DEFAULT_SIZE, + &client_sess_cache); isc_quota_init(&listener_quota, 0); atomic_store(&check_listener_quota, false); diff --git a/tests/isc/netmgr_common.c b/tests/isc/netmgr_common.c index cd4e8f28c0..ce8aff3b65 100644 --- a/tests/isc/netmgr_common.c +++ b/tests/isc/netmgr_common.c @@ -186,9 +186,10 @@ setup_netmgr_test(void **state) { isc_tlsctx_enable_dot_client_alpn(tcp_connect_tlsctx); - tcp_tlsctx_client_sess_cache = isc_tlsctx_client_session_cache_new( + isc_tlsctx_client_session_cache_create( mctx, tcp_connect_tlsctx, - ISC_TLSCTX_CLIENT_SESSION_CACHE_DEFAULT_SIZE); + ISC_TLSCTX_CLIENT_SESSION_CACHE_DEFAULT_SIZE, + &tcp_tlsctx_client_sess_cache); return (0); }