|
From: cron2 (C. Review) <ge...@op...> - 2024-12-21 15:30:20
|
cron2 has submitted this change. ( http://gerrit.openvpn.net/c/openvpn/+/835?usp=email ) Change subject: dns: clone options via pointer instead of copy ...................................................................... dns: clone options via pointer instead of copy Change-Id: I12b8bb26c0cb70e50b2d42b1c69018894e9f080c Signed-off-by: Heiko Hund <he...@is...> Acked-by: Frank Lichtenheld <fr...@li...> Message-Id: <202...@li...> URL: https://www.mail-archive.com/ope...@li.../msg30112.html Signed-off-by: Gert Doering <ge...@gr...> --- M src/openvpn/dns.c M src/openvpn/dns.h M src/openvpn/options.c 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/openvpn/dns.c b/src/openvpn/dns.c index 15e7322..e22ea00 100644 --- a/src/openvpn/dns.c +++ b/src/openvpn/dns.c @@ -248,13 +248,15 @@ } struct dns_options -clone_dns_options(const struct dns_options o, struct gc_arena *gc) +clone_dns_options(const struct dns_options *o, struct gc_arena *gc) { struct dns_options clone; + memset(&clone, 0, sizeof(clone)); - clone.search_domains = clone_dns_domains(o.search_domains, gc); - clone.servers = clone_dns_servers(o.servers, gc); - clone.servers_prepull = clone_dns_servers(o.servers_prepull, gc); + clone.search_domains = clone_dns_domains(o->search_domains, gc); + clone.servers = clone_dns_servers(o->servers, gc); + clone.servers_prepull = clone_dns_servers(o->servers_prepull, gc); + return clone; } diff --git a/src/openvpn/dns.h b/src/openvpn/dns.h index a4ccb95..838ebe1 100644 --- a/src/openvpn/dns.h +++ b/src/openvpn/dns.h @@ -129,7 +129,8 @@ * @param gc Pointer to the gc_arena to use for the clone * @return The dns_options clone */ -struct dns_options clone_dns_options(const struct dns_options o, struct gc_arena *gc); +struct dns_options clone_dns_options(const struct dns_options *o, + struct gc_arena *gc); /** * Saves and resets the server options, so that pulled ones don't mix in. diff --git a/src/openvpn/options.c b/src/openvpn/options.c index d8dd518..b2a3a8b 100644 --- a/src/openvpn/options.c +++ b/src/openvpn/options.c @@ -3311,7 +3311,7 @@ o->pre_connect->route_default_gateway = o->route_default_gateway; o->pre_connect->route_ipv6_default_gateway = o->route_ipv6_default_gateway; - o->pre_connect->dns_options = clone_dns_options(o->dns_options, &o->gc); + o->pre_connect->dns_options = clone_dns_options(&o->dns_options, &o->gc); /* NCP related options that can be overwritten by a push */ o->pre_connect->ciphername = o->ciphername; @@ -3364,7 +3364,7 @@ /* Free DNS options and reset them to pre-pull state */ gc_free(&o->dns_options.gc); struct gc_arena dns_gc = gc_new(); - o->dns_options = clone_dns_options(pp->dns_options, &dns_gc); + o->dns_options = clone_dns_options(&pp->dns_options, &dns_gc); o->dns_options.gc = dns_gc; if (pp->client_nat_defined) -- To view, visit http://gerrit.openvpn.net/c/openvpn/+/835?usp=email To unsubscribe, or for help writing mail filters, visit http://gerrit.openvpn.net/settings Gerrit-Project: openvpn Gerrit-Branch: master Gerrit-Change-Id: I12b8bb26c0cb70e50b2d42b1c69018894e9f080c Gerrit-Change-Number: 835 Gerrit-PatchSet: 2 Gerrit-Owner: d12fk <he...@op...> Gerrit-Reviewer: flichtenheld <fr...@li...> Gerrit-Reviewer: plaisthos <arn...@rf...> Gerrit-CC: openvpn-devel <ope...@li...> Gerrit-MessageType: merged |