cron2 has submitted this change. ( http://gerrit.openvpn.net/c/openvpn/+/1026?usp=email )
Change subject: dns: fix potential NULL pointer dereference ...................................................................... dns: fix potential NULL pointer dereference Fix issue reported by Coverity (CID 1646952): Dereferencing a pointer that might be NULL dvf when calling env_set_write_file. In addition to the fix, inline the write_dns_vars_file() helper function. Also output a log line in case this error happens, because when it happens it will hinder communication with the updown runner process, i.e. setting up / tearing down DNS things will not work as expected. Change-Id: I275bf939f43577427e14890e7093d63c5213ae5d Signed-off-by: Heiko Hund <[email protected]> Acked-by: Gert Doering <[email protected]> Message-Id: <[email protected]> URL: https://www.mail-archive.com/[email protected]/msg31720.html Signed-off-by: Gert Doering <[email protected]> --- M src/openvpn/dns.c 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/openvpn/dns.c b/src/openvpn/dns.c index 221e9a9..283ce67 100644 --- a/src/openvpn/dns.c +++ b/src/openvpn/dns.c @@ -688,18 +688,6 @@ return true; } -static const char * -write_dns_vars_file(bool up, const struct options *o, const struct tuntap *tt, struct gc_arena *gc) -{ - struct env_set *es = env_set_create(gc); - const char *dvf = platform_create_temp_file(o->tmp_dir, "dvf", gc); - - updown_env_set(up, &o->dns_options, tt, es); - env_set_write_file(dvf, es); - - return dvf; -} - static void run_up_down_command(bool up, struct options *o, const struct tuntap *tt, struct dns_updown_runner_info *updown_runner) { @@ -708,7 +696,7 @@ return; } - int status; + int status = -1; if (!updown_runner->required) { @@ -727,11 +715,19 @@ } struct gc_arena gc = gc_new(); - int rfd = updown_runner->fds[0]; - int wfd = updown_runner->fds[1]; - const char *dvf = write_dns_vars_file(up, o, tt, &gc); - size_t dvf_size = strlen(dvf) + 1; + const char *dvf = platform_create_temp_file(o->tmp_dir, "dvf", &gc); + if (!dvf) + { + msg(M_ERR, "could not create dns vars file"); + goto out_free; + } + struct env_set *es = env_set_create(&gc); + updown_env_set(up, &o->dns_options, tt, es); + env_set_write_file(dvf, es); + + int wfd = updown_runner->fds[1]; + size_t dvf_size = strlen(dvf) + 1; while (1) { ssize_t len = write(wfd, dvf, dvf_size); @@ -746,6 +742,7 @@ break; } + int rfd = updown_runner->fds[0]; while (1) { ssize_t len = read(rfd, &status, sizeof(status)); @@ -760,6 +757,7 @@ break; } +out_free: gc_free(&gc); } -- To view, visit http://gerrit.openvpn.net/c/openvpn/+/1026?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: I275bf939f43577427e14890e7093d63c5213ae5d Gerrit-Change-Number: 1026 Gerrit-PatchSet: 4 Gerrit-Owner: d12fk <[email protected]> Gerrit-Reviewer: cron2 <[email protected]> Gerrit-Reviewer: flichtenheld <[email protected]> Gerrit-Reviewer: plaisthos <[email protected]> Gerrit-CC: openvpn-devel <[email protected]> Gerrit-MessageType: merged
_______________________________________________ Openvpn-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openvpn-devel
