%lu is not supported by our tiny argv_printf implementation, therefore
it will trigger an ASSERT() when parsing it at route.c:1638.

Add support for '%lu' in argv_print() and prevent the ASSERT from being
triggered.

Signed-off-by: Antonio Quartulli <a...@unstable.cc>
---

It seems I managed to trigger this ASSERT when connecting to my v6-only
server with "gateway-redirect !ipv4 ipv6" set. Not sure why this issue
hasn't surfaced earlier though.


Changes from v1:
- keep format string as "%lu" but add support for it in argv_printf()
- tested on Windows 10 on top of the ipv6-only branch

 src/openvpn/argv.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/openvpn/argv.c b/src/openvpn/argv.c
index dec7e3bf..9100a196 100644
--- a/src/openvpn/argv.c
+++ b/src/openvpn/argv.c
@@ -251,6 +251,13 @@ argv_printf_arglist(struct argv *a, const char *format, 
va_list arglist)
                 openvpn_snprintf(numstr, sizeof(numstr), "%u", va_arg(arglist, 
unsigned int));
                 argv_append(a, string_alloc(numstr, NULL));
             }
+            else if (!strcmp(term, "%lu"))
+            {
+                char numstr[64];
+                openvpn_snprintf(numstr, sizeof(numstr), "%lu",
+                                 va_arg(arglist, unsigned long));
+                argv_append(a, string_alloc(numstr, NULL));
+            }
             else if (!strcmp(term, "%s/%d"))
             {
                 char numstr[64];
-- 
2.17.1


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to