]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
Fix too early argv freeing when registering DNS
authorDomagoj Pensa <domagoj@pensa.hr>
Tue, 15 Dec 2020 17:16:00 +0000 (18:16 +0100)
committerGert Doering <gert@greenie.muc.de>
Tue, 15 Dec 2020 18:47:43 +0000 (19:47 +0100)
When registering DNS on Windows, argv is freed after being used in first
ipconfig command (/flushdns).

Then same argv is used uninitialized in next ipconfig command
(/registerdns)
causing heap exception and subprocess crash.

As a consequence second command is never executed and locked netcmd
semaphore is not cleanly released.

Removing argv freeing between ipconfig calls solves the problem.

This issue was introduced in commit 870e240 (argv: do fewer memory
re-allocations). After a quick glance at commit no similar problem was
spotted in rest of the argv related changes.

Signed-off-by: Domagoj Pensa <domagoj@pensa.hr>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <20201215171600.25534-1-domagoj@pensa.hr>
URL: https://www.mail-archive.com/search?l=mid&q=20201215171600.25534-1-domagoj@pensa.hr
Signed-off-by: Gert Doering <gert@greenie.muc.de>
src/openvpn/tun.c

index 400a50cac68e202ba8fa8e4ec22f46eb9f256d7e..2b227bb60c549cb3f76d64c245a2a9d9bbfdc214 100644 (file)
@@ -5235,7 +5235,6 @@ ipconfig_register_dns(const struct env_set *es)
                 WIN_IPCONFIG_PATH_SUFFIX);
     argv_msg(D_TUNTAP_INFO, &argv);
     openvpn_execve_check(&argv, es, 0, err);
-    argv_free(&argv);
 
     argv_printf(&argv, "%s%s /registerdns",
                 get_win_sys_path(),