From: Arne Schwabe Date: Mon, 20 Feb 2023 13:14:24 +0000 (+0100) Subject: Exit if a proper message instead of segfault on Android without management X-Git-Tag: v2.7_alpha1~546 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3132bead497deca24dc638e151bf7194df6f4884;p=thirdparty%2Fopenvpn.git Exit if a proper message instead of segfault on Android without management 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 Acked-by: Gert Doering Message-Id: <20230220131424.1749736-1-arne@rfc2549.org> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg26288.html Signed-off-by: Gert Doering --- diff --git a/src/openvpn/manage.c b/src/openvpn/manage.c index 8397d3cf6..a55e5d788 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) */