1) I put remote lenght to 51, as it have to hold ipv6/ipv4 ip address
plus string terminator.

2) As asked, i refactor the call to get_env, so now first of all there
   is a one call to get_env to get the ipv6 address, if is not set, and
   only in this case,  we recall get_env for ipv4.
---
 .gitignore                      | 1 +
 src/plugins/auth-pam/auth-pam.c | 8 ++++++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/.gitignore b/.gitignore
index 0d68ec4b..3977882f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -72,3 +72,4 @@ nbproject
 test-driver
 compile
 stamp-h2
+outgoing/*
diff --git a/src/plugins/auth-pam/auth-pam.c b/src/plugins/auth-pam/auth-pam.c
index 9d8dfb95..b55a2ecd 100644
--- a/src/plugins/auth-pam/auth-pam.c
+++ b/src/plugins/auth-pam/auth-pam.c
@@ -115,7 +115,7 @@ struct user_pass {
     char password[128];
     char common_name[128];
     char response[128];
-    char remote[128];
+    char remote[51]; //51 as ipv6 form n:n:n:n:n:n:d.d.d.d/mask and 
terminator+1
 
     const struct name_value_list *name_value_list;
 };
@@ -518,7 +518,11 @@ openvpn_plugin_func_v1(openvpn_plugin_handle_t handle, 
const int type, const cha
         const char *username = get_env("username", envp);
         const char *password = get_env("password", envp);
         const char *common_name = get_env("common_name", envp) ? 
get_env("common_name", envp) : "";
-        const char *remote = get_env("untrusted_ip", envp) ? 
get_env("untrusted_ip", envp) : get_env("untrusted_ip6", envp);
+        const char *remote = get_env("untrusted_ip6", envp);
+       
+       if (remote == NULL){ 
+               remote = get_env("untrusted_ip", envp); //try to take ipv4 if 
not set ipv6
+       }
 
         if (username && strlen(username) > 0 && password)
         {
-- 
2.26.0



_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to