From: Florian Obser Subject: Re: unbound 1.22.0 To: tech@openbsd.org Date: Fri, 21 Feb 2025 10:38:21 +0100 On 2025-02-21 08:36 UTC, Stuart Henderson wrote: > On 2025/02/07 21:30, Stuart Henderson wrote: >> Upstream release was a few months ago. As usual not super easy to read >> as a diff in one go, and many of the changes relate to things not used >> in the OpenBSD build. > > I don't have any particular concerns about this - any objection to > committing this so it gets wider testing? > > [full diff removed; available at https://junkpile.org/unbound-1.22.0.diff.gz] There seems to be a bad merge in configparser.y: [florian@openbsd-build:/usr/src/usr.sbin/unbound (unbound/1.22.0)] e -f Makefile.bsd-wrapper > /dev/null < /usr/src/usr.sbin/unbound/util/configparser.y: the symbol server_iter_scrub_ns is undefined /usr/src/usr.sbin/unbound/util/configparser.y: the symbol server_iter_scrub_cname is undefined /usr/src/usr.sbin/unbound/util/configparser.y: the symbol server_max_global_quota is undefined diffing configparser.y from the release tarball: --- /usr/src/usr.sbin/unbound/util/configparser.y Fri Feb 21 10:05:03 2025 +++ util/configparser.y Thu Oct 17 09:23:14 2024 @@ -4084,45 +4084,72 @@ cfg_parser->cfg->cookie_secret_file = $2; } ; - ipsetstart: VAR_IPSET - { - OUTYY(("\nP(ipset:)\n")); - cfg_parser->started_toplevel = 1; - } - ; - contents_ipset: contents_ipset content_ipset - | ; - content_ipset: ipset_name_v4 | ipset_name_v6 - ; - ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG - { - #ifdef USE_IPSET - OUTYY(("P(name-v4:%s)\n", $2)); - if(cfg_parser->cfg->ipset_name_v4) - yyerror("ipset name v4 override, there must be one " - "name for ip v4"); - free(cfg_parser->cfg->ipset_name_v4); - cfg_parser->cfg->ipset_name_v4 = $2; - #else - OUTYY(("P(Compiled without ipset, ignoring)\n")); - free($2); - #endif - } +server_iter_scrub_ns: VAR_ITER_SCRUB_NS STRING_ARG + { + OUTYY(("P(server_iter_scrub_ns:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->iter_scrub_ns = atoi($2); + free($2); + } ; - ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG +server_iter_scrub_cname: VAR_ITER_SCRUB_CNAME STRING_ARG { - #ifdef USE_IPSET - OUTYY(("P(name-v6:%s)\n", $2)); - if(cfg_parser->cfg->ipset_name_v6) - yyerror("ipset name v6 override, there must be one " - "name for ip v6"); - free(cfg_parser->cfg->ipset_name_v6); - cfg_parser->cfg->ipset_name_v6 = $2; - #else - OUTYY(("P(Compiled without ipset, ignoring)\n")); - free($2); - #endif - } + OUTYY(("P(server_iter_scrub_cname:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->iter_scrub_cname = atoi($2); + free($2); + } + ; +server_max_global_quota: VAR_MAX_GLOBAL_QUOTA STRING_ARG + { + OUTYY(("P(server_max_global_quota:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->max_global_quota = atoi($2); + free($2); + } + ; +ipsetstart: VAR_IPSET + { + OUTYY(("\nP(ipset:)\n")); + cfg_parser->started_toplevel = 1; + } + ; +contents_ipset: contents_ipset content_ipset + | ; +content_ipset: ipset_name_v4 | ipset_name_v6 + ; +ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG + { + #ifdef USE_IPSET + OUTYY(("P(name-v4:%s)\n", $2)); + if(cfg_parser->cfg->ipset_name_v4) + yyerror("ipset name v4 override, there must be one " + "name for ip v4"); + free(cfg_parser->cfg->ipset_name_v4); + cfg_parser->cfg->ipset_name_v4 = $2; + #else + OUTYY(("P(Compiled without ipset, ignoring)\n")); + free($2); + #endif + } + ; +ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG + { + #ifdef USE_IPSET + OUTYY(("P(name-v6:%s)\n", $2)); + if(cfg_parser->cfg->ipset_name_v6) + yyerror("ipset name v6 override, there must be one " + "name for ip v6"); + free(cfg_parser->cfg->ipset_name_v6); + cfg_parser->cfg->ipset_name_v6 = $2; + #else + OUTYY(("P(Compiled without ipset, ignoring)\n")); + free($2); + #endif + } ; %% -- In my defence, I have been left unsupervised.