diff --git a/include/spdlog/details/udp_client-windows.h b/include/spdlog/details/udp_client-windows.h index f45a5600..5cc3dd88 100644 --- a/include/spdlog/details/udp_client-windows.h +++ b/include/spdlog/details/udp_client-windows.h @@ -64,7 +64,11 @@ public: addr_.sin_family = PF_INET; addr_.sin_port = htons(port); addr_.sin_addr.s_addr = INADDR_ANY; - InetPton(PF_INET, TEXT(host.c_str()), &addr_.sin_addr.s_addr); + if (InetPton(PF_INET, TEXT(host.c_str()), &addr_.sin_addr.s_addr) != 1) { + int last_error = ::WSAGetLastError(); + ::WSACleanup(); + throw_winsock_error_("error: Invalid address!", last_error); + } socket_ = ::socket(PF_INET, SOCK_DGRAM, 0); if (socket_ == INVALID_SOCKET) diff --git a/include/spdlog/details/udp_client.h b/include/spdlog/details/udp_client.h index 6d0919b6..ccdf2f0b 100644 --- a/include/spdlog/details/udp_client.h +++ b/include/spdlog/details/udp_client.h @@ -58,7 +58,11 @@ public: sockAddr_.sin_family = AF_INET; sockAddr_.sin_port = htons(port); - ::inet_aton(host.c_str(), &sockAddr_.sin_addr); + + if (::inet_aton(host.c_str(), &sockAddr_.sin_addr) == 0) { + cleanup_(); + throw_spdlog_ex("error: Invalid address!"); + } ::memset(sockAddr_.sin_zero, 0x00, sizeof(sockAddr_.sin_zero)); }