]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
clean up environment variable handling in verify_user_pass_script
authorArne Schwabe <arne@rfc2549.org>
Thu, 30 Oct 2025 19:43:56 +0000 (20:43 +0100)
committerGert Doering <gert@greenie.muc.de>
Thu, 30 Oct 2025 20:54:16 +0000 (21:54 +0100)
The username environment variable is already set by the
set_verify_user_pass_env function before the verify_user_pass_script
function is called, so this call is not doing anything but might erroneously
made people think that this needs to be cleaned up.

Also ensure that the password is clean from the env even in an error case.

Reported-by: Joshua Rogers <contact@joshua.hu>
Found-by: ZeroPath (https://zeropath.com/)
Change-Id: I6c502508026c6b85bb092ada4d16d985b20dd41f
Signed-off-by: Arne Schwabe <arne-openvpn@rfc2549.org>
Acked-by: Gert Doering <gert@greenie.muc.de>
Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1326
Message-Id: <20251030194402.1729-1-gert@greenie.muc.de>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg34069.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
src/openvpn/ssl_verify.c

index 04ef27e86c1d40a1e619dcf28a7b34573b593015..993d22c2b8ce38d4169c31296647cbb0f7bf5aa9 100644 (file)
@@ -1329,7 +1329,7 @@ verify_user_pass_script(struct tls_session *session, struct tls_multi *multi,
     }
     else
     {
-        setenv_str(session->opt->es, "username", up->username);
+        /* username env is already set by set_verify_user_pass_env */
         setenv_str(session->opt->es, "password", up->password);
     }
 
@@ -1377,10 +1377,6 @@ verify_user_pass_script(struct tls_session *session, struct tls_multi *multi,
         /* purge auth control filename (and file itself) for non-deferred returns */
         key_state_rm_auth_control_files(&ks->script_auth);
     }
-    if (!session->opt->auth_user_pass_verify_script_via_file)
-    {
-        setenv_del(session->opt->es, "password");
-    }
 
 done:
     if (tmp_file && strlen(tmp_file) > 0)
@@ -1389,6 +1385,11 @@ done:
     }
 
 error:
+    if (!session->opt->auth_user_pass_verify_script_via_file)
+    {
+        setenv_del(session->opt->es, "password");
+    }
+
     argv_free(&argv);
     gc_free(&gc);
     return retval;