The assert() check might be optimized away in Release builds,
and killing the process through abort() when input formats are
bad when we already have an error message in place does not seem right.

Suggested by: Ralf Lici <r...@mandelbit.com>

Signed-off-by: Matthias Andree <matthias.and...@gmx.de>
---
 src/openvpn/dco_freebsd.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/openvpn/dco_freebsd.c b/src/openvpn/dco_freebsd.c
index 931f9f68..a756dcca 100644
--- a/src/openvpn/dco_freebsd.c
+++ b/src/openvpn/dco_freebsd.c
@@ -100,7 +100,10 @@ nvlist_to_sockaddr(const nvlist_t *nvl, struct 
sockaddr_storage *ss)
 
             in->sin_len = sizeof(*in);
             data = nvlist_get_binary(nvl, "address", &len);
-            assert(len == sizeof(in->sin_addr));
+            if (len != sizeof(in->sin_addr))
+            {
+                return (false);
+            }
             memcpy(&in->sin_addr, data, sizeof(in->sin_addr));
             in->sin_port = nvlist_get_number(nvl, "port");
             break;
@@ -114,7 +117,10 @@ nvlist_to_sockaddr(const nvlist_t *nvl, struct 
sockaddr_storage *ss)
 
             in6->sin6_len = sizeof(*in6);
             data = nvlist_get_binary(nvl, "address", &len);
-            assert(len == sizeof(in6->sin6_addr));
+            if (len != sizeof(in6->sin6_addr))
+            {
+                return (false);
+            }
             memcpy(&in6->sin6_addr, data, sizeof(in6->sin6_addr));
             in6->sin6_port = nvlist_get_number(nvl, "port");
 
-- 
2.51.0



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

Reply via email to