diff --git a/doc/Changelog b/doc/Changelog index 24b7e1a19..a966c08ed 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +16 June 2025: Wouter + - Fix to check control-interface addresses in unbound-checkconf. + - Fix #1295: Windows 32-bit binaries download seems to be missing dll + dependency. + 12 June 2025: Wouter - Fix header return value description for skip_pkt_rrs and parse_edns_from_query_pkt. diff --git a/makedist.sh b/makedist.sh index c1e19f6f1..dac4bc10a 100755 --- a/makedist.sh +++ b/makedist.sh @@ -539,6 +539,12 @@ if [ "$DOWIN" = "yes" ]; then if test -f "$sspdll"; then cp "$sspdll" libunbound/. fi + if test "$W64" = "no"; then + # This could be solved with -static -static-libgcc -static-libstdc++. + # The dependency on c++ is probably due to libexpat. But the copy + # of the dll should work too. It may be needed for the libunbound.dll. + cp /usr/i686-w64-mingw32/sys-root/mingw/bin/libgcc_s_dw2-1.dll libunbound/. + fi # zipfile zip -r ../$file LICENSE README.txt unbound.exe unbound-anchor.exe unbound-host.exe unbound-control.exe unbound-checkconf.exe unbound-service-install.exe unbound-service-remove.exe unbound-control-setup.cmd example.conf service.conf root.key unbound-website.url create_unbound_ad_servers.cmd warmup.cmd unbound_cache.cmd Changelog libunbound info "Testing $file" diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 07892fc4d..2ca69e9e6 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -454,6 +454,39 @@ ifautomaticportschecks(char* ifautomaticports) } } +/** check control interface strings */ +static void +controlinterfacechecks(struct config_file* cfg) +{ + struct config_strlist* p; + for(p = cfg->control_ifs.first; p; p = p->next) { + struct sockaddr_storage a; + socklen_t alen; + char** rcif = NULL; + int i, num_rcif = 0; + /* See if it is a local socket, starts with a '/'. */ + if(p->str && p->str[0] == '/') + continue; + if(!resolve_interface_names(&p->str, 1, NULL, &rcif, + &num_rcif)) { + fatal_exit("could not resolve interface names, for control-interface: %s", + p->str); + } + for(i=0; icontrol_port)) { + if(strcmp(p->str, rcif[i])!=0) + fatal_exit("cannot parse control-interface address '%s' from the control-interface specified as '%s'", + rcif[i], p->str); + else + fatal_exit("cannot parse control-interface specified as '%s'", + p->str); + } + } + config_del_strarray(rcif, num_rcif); + } +} + /** check acl ips */ static void aclchecks(struct config_file* cfg) @@ -932,6 +965,8 @@ morechecks(struct config_file* cfg) fatal_exit("control-cert-file: \"%s\" does not exist", cfg->control_cert_file); } + if(cfg->remote_control_enable) + controlinterfacechecks(cfg); donotquerylocalhostcheck(cfg); localzonechecks(cfg);