From 6918c9d17a26021a11dcfdbb860589c43c8bab46 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Mon, 21 Oct 2024 11:34:32 +1100 Subject: [PATCH] Fix parsing of hostnames in rndc.conf When DSCP was removed the parsing of hostnames was accidentally broken resulting in an assertion failure. Call cfg_parse_tuple rather than using custom code in parse_sockaddrnameport. (cherry picked from commit 6c095f89f5ac22bb67e9ef6d67b75d77234fea45) --- lib/isccfg/namedconf.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/lib/isccfg/namedconf.c b/lib/isccfg/namedconf.c index b550150c45..8b5abda400 100644 --- a/lib/isccfg/namedconf.c +++ b/lib/isccfg/namedconf.c @@ -3858,7 +3858,6 @@ static isc_result_t parse_sockaddrnameport(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) { isc_result_t result; - cfg_obj_t *obj = NULL; UNUSED(type); CHECK(cfg_peektoken(pctx, CFG_LEXOPT_QSTRING)); @@ -3870,17 +3869,7 @@ parse_sockaddrnameport(cfg_parser_t *pctx, const cfg_type_t *type, CHECK(cfg_parse_sockaddr(pctx, &cfg_type_sockaddr, ret)); } else { - const cfg_tuplefielddef_t *fields = - cfg_type_nameport.of; - CHECK(cfg_create_tuple(pctx, &cfg_type_nameport, &obj)); - CHECK(cfg_parse_obj(pctx, fields[0].type, - &obj->value.tuple[0])); - CHECK(cfg_parse_obj(pctx, fields[1].type, - &obj->value.tuple[1])); - CHECK(cfg_parse_obj(pctx, fields[2].type, - &obj->value.tuple[2])); - *ret = obj; - obj = NULL; + CHECK(cfg_parse_tuple(pctx, &cfg_type_nameport, ret)); } } else { cfg_parser_error(pctx, CFG_LOG_NEAR, @@ -3888,7 +3877,6 @@ parse_sockaddrnameport(cfg_parser_t *pctx, const cfg_type_t *type, return (ISC_R_UNEXPECTEDTOKEN); } cleanup: - CLEANUP_OBJ(obj); return (result); }