Internal change
PiperOrigin-RevId: 477302086
Change-Id: Ib268dfbcfb9b4fc229a18dad3fb9633cb6c2642a
diff --git a/patches/remove_session_opt_pull_check.patch b/patches/remove_session_opt_pull_check.patch
new file mode 100644
index 0000000..8e4d3b6
--- /dev/null
+++ b/patches/remove_session_opt_pull_check.patch
@@ -0,0 +1,30 @@
+--- a/src/openvpn/ssl.c
++++ b/src/openvpn/ssl.c
+@@ -2386,20 +2386,15 @@ key_method_2_write(struct buffer *buf, s
+ {
+ goto error;
+ }
+- /* if auth-nocache was specified, the auth_user_pass object reaches
+- * a "complete" state only after having received the push-reply
+- * message. The push message might contain an auth-token that needs
+- * the username of auth_user_pass.
++ /* purge username/password after writing them to the buffer for
++ * authentication.
+ *
+- * For this reason, skip the purge operation here if no push-reply
+- * message has been received yet.
+- *
+- * This normally happens upon first negotiation only.
++ * We don't wait for the server push-reply message, which might contain
++ * an auth-token that needs the username of auth_user_pass. It means
++ * auth-token may not work properly if username and password are purged
++ * too early.
+ */
+- if (!session->opt->pull)
+- {
+- purge_user_pass(&auth_user_pass, false);
+- }
++ purge_user_pass(&auth_user_pass, false);
+ }
+ else
+ {
diff --git a/patches/series b/patches/series
index c79e662..16c07cc 100644
--- a/patches/series
+++ b/patches/series
@@ -2,3 +2,4 @@
add_missing_licenses.patch
fix_long_password.patch
cleanup_makefiles.patch
+remove_session_opt_pull_check.patch
diff --git a/src/openvpn/ssl.c b/src/openvpn/ssl.c
index 841a649..94ab142 100644
--- a/src/openvpn/ssl.c
+++ b/src/openvpn/ssl.c
@@ -2386,20 +2386,15 @@
{
goto error;
}
- /* if auth-nocache was specified, the auth_user_pass object reaches
- * a "complete" state only after having received the push-reply
- * message. The push message might contain an auth-token that needs
- * the username of auth_user_pass.
+ /* purge username/password after writing them to the buffer for
+ * authentication.
*
- * For this reason, skip the purge operation here if no push-reply
- * message has been received yet.
- *
- * This normally happens upon first negotiation only.
+ * We don't wait for the server push-reply message, which might contain
+ * an auth-token that needs the username of auth_user_pass. It means
+ * auth-token may not work properly if username and password are purged
+ * too early.
*/
- if (!session->opt->pull)
- {
- purge_user_pass(&auth_user_pass, false);
- }
+ purge_user_pass(&auth_user_pass, false);
}
else
{