The Android implementation is relying on the management interface to be
always available. Trying to run the Android binary without the mangament
interface outside the app leads to a segfault. Exit with a FATAL error
instead.

Signed-off-by: Arne Schwabe <a...@rfc2549.org>
---
 src/openvpn/manage.c | 4 ++++
 src/openvpn/socket.c | 5 +++++
 2 files changed, 9 insertions(+)

diff --git a/src/openvpn/manage.c b/src/openvpn/manage.c
index 3ea1992b0..db88e3479 100644
--- a/src/openvpn/manage.c
+++ b/src/openvpn/manage.c
@@ -2192,6 +2192,10 @@ man_recv_with_fd(int fd, void *ptr, size_t nbytes, int 
flags, int *recvfd)
 bool
 management_android_control(struct management *man, const char *command, const 
char *msg)
 {
+    if (!man)
+    {
+        msg(M_FATAL, "Required management interface not available.");
+    }
     struct user_pass up;
     CLEAR(up);
     strncpy(up.username, msg, sizeof(up.username)-1);
diff --git a/src/openvpn/socket.c b/src/openvpn/socket.c
index 42d953390..eff21ca56 100644
--- a/src/openvpn/socket.c
+++ b/src/openvpn/socket.c
@@ -1161,6 +1161,11 @@ create_socket(struct link_socket *sock, struct addrinfo 
*addr)
 static void
 protect_fd_nonlocal(int fd, const struct sockaddr *addr)
 {
+    if (!management)
+    {
+        msg(M_FATAL, "Required management interface not available.")
+    }
+
     /* pass socket FD to management interface to pass on to VPNService API
      * as "protected socket" (exempt from being routed into tunnel)
      */
-- 
2.37.1 (Apple Git-137.1)



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

Reply via email to