From 4f9a7d31d3415951fa9bef3b23e3f81c5defd66b Mon Sep 17 00:00:00 2001 From: Hamish Coleman Date: Wed, 21 Jun 2023 18:23:34 +0100 Subject: [PATCH] Fix bug in returned interface address --- include/edge_utils_win32.h | 3 +-- src/edge_utils.c | 2 +- src/edge_utils_win32.c | 4 ++-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/include/edge_utils_win32.h b/include/edge_utils_win32.h index 09f8366..caf75eb 100644 --- a/include/edge_utils_win32.h +++ b/include/edge_utils_win32.h @@ -43,8 +43,7 @@ struct tunread_arg { }; extern HANDLE startTunReadThread (struct tunread_arg *arg); -int get_best_interface_ip (n2n_edge_t * eee, dec_ip_str_t ip_addr); - +int get_best_interface_ip (n2n_edge_t * eee, dec_ip_str_t *ip_addr); #endif /* WIN32 */ diff --git a/src/edge_utils.c b/src/edge_utils.c index 8d6568a..e560b24 100644 --- a/src/edge_utils.c +++ b/src/edge_utils.c @@ -1184,7 +1184,7 @@ static void check_join_multicast_group (n2n_edge_t *eee) { mreq.imr_multiaddr.s_addr = inet_addr(N2N_MULTICAST_GROUP); #ifdef WIN32 dec_ip_str_t ip_addr; - get_best_interface_ip(eee, ip_addr); + get_best_interface_ip(eee, &ip_addr); mreq.imr_interface.s_addr = inet_addr(ip_addr); #else mreq.imr_interface.s_addr = htonl(INADDR_ANY); diff --git a/src/edge_utils_win32.c b/src/edge_utils_win32.c index a32e06c..786968e 100644 --- a/src/edge_utils_win32.c +++ b/src/edge_utils_win32.c @@ -51,7 +51,7 @@ HANDLE startTunReadThread (struct tunread_arg *arg) { -int get_best_interface_ip (n2n_edge_t * eee, dec_ip_str_t ip_addr){ +int get_best_interface_ip (n2n_edge_t * eee, dec_ip_str_t *ip_addr){ DWORD interface_index = -1; DWORD dwRetVal = 0; PIP_ADAPTER_INFO pAdapterInfo = NULL, pAdapter = NULL; @@ -94,7 +94,7 @@ int get_best_interface_ip (n2n_edge_t * eee, dec_ip_str_t ip_addr){ traceEvent(TRACE_DEBUG, "IP Address: %s\n", pAdapter->IpAddressList.IpAddress.String); traceEvent(TRACE_DEBUG, "IP Mask: %s\n", pAdapter->IpAddressList.IpMask.String); traceEvent(TRACE_DEBUG, "Gateway: %s\n", pAdapter->GatewayList.IpAddress.String); - strncpy(ip_addr, pAdapter->IpAddressList.IpAddress.String, sizeof(dec_ip_str_t)-1); + strncpy(ip_addr, pAdapter->IpAddressList.IpAddress.String, sizeof(*ip_addr)); } } else { traceEvent(TRACE_WARNING, "GetAdaptersInfo failed with error: %d\n", dwRetVal);