diff --git a/CHANGES b/CHANGES index 4c28c97316..abff8d63e7 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +5963. [bug] Ensure struct named_server is properly initialized. + [GL #6531] + 5962. [placeholder] 5961. [placeholder] diff --git a/bin/named/server.c b/bin/named/server.c index fd7426ac74..abd700da73 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -10236,13 +10236,14 @@ named_server_create(isc_mem_t *mctx, named_server_t **serverp) { isc_result_t result; named_server_t *server = isc_mem_get(mctx, sizeof(*server)); - if (server == NULL) { - fatal(server, "allocating server object", ISC_R_NOMEMORY); - } - - server->mctx = mctx; - server->task = NULL; - server->zonemgr = NULL; + *server = (named_server_t){ + .mctx = mctx, + .statsfile = isc_mem_strdup(mctx, "named.stats"), + .bindkeysfile = isc_mem_strdup(mctx, named_g_defaultbindkeys), + .dumpfile = isc_mem_strdup(mctx, "named_dump.db"), + .secrootsfile = isc_mem_strdup(mctx, "named.secroots"), + .recfile = isc_mem_strdup(mctx, "named.recursing"), + }; #ifdef USE_DNSRPS CHECKFATAL(dns_dnsrps_server_create(), "initializing RPZ service " @@ -10250,10 +10251,8 @@ named_server_create(isc_mem_t *mctx, named_server_t **serverp) { #endif /* ifdef USE_DNSRPS */ /* Initialize server data structures. */ - server->interfacemgr = NULL; ISC_LIST_INIT(server->kasplist); ISC_LIST_INIT(server->viewlist); - server->in_roothints = NULL; /* Must be first. */ CHECKFATAL(dst_lib_init(named_g_mctx, named_g_engine), "initializing " @@ -10275,7 +10274,6 @@ named_server_create(isc_mem_t *mctx, named_server_t **serverp) { isc_task_setname(server->task, "server", server); isc_taskmgr_setexcltask(named_g_taskmgr, server->task); - server->sctx = NULL; CHECKFATAL(ns_server_create(mctx, get_matching_view, &server->sctx), "creating server context"); @@ -10302,50 +10300,11 @@ named_server_create(isc_mem_t *mctx, named_server_t **serverp) { server->sighup = isc_signal_new( named_g_loopmgr, named_server_reloadwanted, server, SIGHUP); - server->interface_timer = NULL; - server->heartbeat_timer = NULL; - server->pps_timer = NULL; - server->tat_timer = NULL; - - server->interface_interval = 0; - server->heartbeat_interval = 0; - CHECKFATAL(dns_zonemgr_create(named_g_mctx, named_g_loopmgr, named_g_taskmgr, named_g_netmgr, &server->zonemgr), "dns_zonemgr_create"); - server->statsfile = isc_mem_strdup(server->mctx, "named.stats"); - CHECKFATAL(server->statsfile == NULL ? ISC_R_NOMEMORY : ISC_R_SUCCESS, - "isc_mem_strdup"); - - server->bindkeysfile = isc_mem_strdup(server->mctx, - named_g_defaultbindkeys); - CHECKFATAL(server->bindkeysfile == NULL ? ISC_R_NOMEMORY - : ISC_R_SUCCESS, - "isc_mem_strdup"); - - server->dumpfile = isc_mem_strdup(server->mctx, "named_dump.db"); - CHECKFATAL(server->dumpfile == NULL ? ISC_R_NOMEMORY : ISC_R_SUCCESS, - "isc_mem_strdup"); - - server->secrootsfile = isc_mem_strdup(server->mctx, "named.secroots"); - CHECKFATAL(server->secrootsfile == NULL ? ISC_R_NOMEMORY - : ISC_R_SUCCESS, - "isc_mem_strdup"); - - server->recfile = isc_mem_strdup(server->mctx, "named.recursing"); - CHECKFATAL(server->recfile == NULL ? ISC_R_NOMEMORY : ISC_R_SUCCESS, - "isc_mem_strdup"); - - server->hostname_set = false; - server->hostname = NULL; - server->version_set = false; - server->version = NULL; - - server->zonestats = NULL; - server->resolverstats = NULL; - server->sockstats = NULL; CHECKFATAL(isc_stats_create(server->mctx, &server->sockstats, isc_sockstatscounter_max), "isc_stats_create"); @@ -10359,33 +10318,17 @@ named_server_create(isc_mem_t *mctx, named_server_t **serverp) { dns_resstatscounter_max), "dns_stats_create (resolver)"); - server->flushonshutdown = false; - - server->controls = NULL; CHECKFATAL(named_controls_create(server, &server->controls), "named_controls_create"); - server->dispatchgen = 0; + ISC_LIST_INIT(server->dispatches); ISC_LIST_INIT(server->statschannels); ISC_LIST_INIT(server->cachelist); - server->sessionkey = NULL; - server->session_keyfile = NULL; - server->session_keyname = NULL; - server->session_keyalg = DST_ALG_UNKNOWN; - server->session_keybits = 0; - - server->lockfile = NULL; - - server->dtenv = NULL; - server->magic = NAMED_SERVER_MAGIC; - server->tlsctx_server_cache = NULL; - server->tlsctx_client_cache = NULL; - *serverp = server; }