From ea54b844fb8d41241db5cd2088319e226cfd8b68 Mon Sep 17 00:00:00 2001 From: gcontini <1121667+gcontini@users.noreply.github.com> Date: 周六, 16 5月 2020 22:08:05 +0800 Subject: [PATCH] tentative fix for issue #92 and #97 --- src/library/os/linux/network.cpp | 4 ++-- src/library/os/network.hpp | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/library/os/linux/network.cpp b/src/library/os/linux/network.cpp index 4e8ccda..5873a2b 100644 --- a/src/library/os/linux/network.cpp +++ b/src/library/os/linux/network.cpp @@ -60,7 +60,7 @@ if (ifa->ifa_addr == NULL || (ifa->ifa_flags & IFF_LOOPBACK) != 0) { continue; } - string if_name(ifa->ifa_name, mstrnlen_s(ifa->ifa_name, NI_MAXHOST)); + string if_name(ifa->ifa_name, mstrnlen_s(ifa->ifa_name, LCC_ADAPTER_DESCRIPTION_LEN)); // if_name_position = ifname_position(ifnames, ifa->ifa_name, if_num); // interface name not seen en advance OsAdapterInfo *currentAdapter; @@ -68,7 +68,7 @@ if (adapterByName.find(if_name) == adapterByName.end()) { OsAdapterInfo newAdapter; memset(&newAdapter, 0, sizeof(OsAdapterInfo)); - strncpy(&newAdapter.description[0], ifa->ifa_name, NI_MAXHOST); + strncpy(&newAdapter.description[0], ifa->ifa_name, LCC_ADAPTER_DESCRIPTION_LEN); adapterByName[if_name] = newAdapter; } auto it = adapterByName.find(if_name); diff --git a/src/library/os/network.hpp b/src/library/os/network.hpp index 6ba1611..5ddf266 100644 --- a/src/library/os/network.hpp +++ b/src/library/os/network.hpp @@ -17,9 +17,17 @@ typedef enum { IFACE_TYPE_ETHERNET, IFACE_TYPE_WIRELESS } IFACE_TYPE; +#ifdef __unix__ +#include <netdb.h> +#define LCC_ADAPTER_DESCRIPTION_LEN NI_MAXHOST +#else +#include <iphlpapi.h> +#define LCC_ADAPTER_DESCRIPTION_LEN MAX_ADAPTER_DESCRIPTION_LENGTH +#endif + typedef struct { int id; - char description[1024]; + char description[LCC_ADAPTER_DESCRIPTION_LEN + 1]; unsigned char mac_address[8]; unsigned char ipv4_address[4]; IFACE_TYPE type; -- Gitblit v1.9.1