Message ID | 20230220131424.1749736-1-arne@rfc2549.org |
---|---|
State | Accepted |
Headers | show |
Series | [Openvpn-devel] Exit if a proper message instead of segfault on Android without management | expand |
Acked-by: Gert Doering <gert@greenie.muc.de> This code is all inside #ifdef TARGET_ANDROID, so I didn't test anything - but it looks all reasonable. Your patch has been applied to the master and release/2.6 branch. commit 3132bead497deca24dc638e151bf7194df6f4884 (master) commit d0c1abb4dee233834de540932ddcaef209696e79 (release/2.6) Author: Arne Schwabe Date: Mon Feb 20 14:14:24 2023 +0100 Exit if a proper message instead of segfault on Android without management Signed-off-by: Arne Schwabe <arne@rfc2549.org> Acked-by: Gert Doering <gert@greenie.muc.de> 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 <gert@greenie.muc.de> -- kind regards, Gert Doering
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) */
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 <arne@rfc2549.org> --- src/openvpn/manage.c | 4 ++++ src/openvpn/socket.c | 5 +++++ 2 files changed, 9 insertions(+)