diff --git a/CMakeLists.txt b/CMakeLists.txt index b28c71d..6a48143 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -204,6 +204,8 @@ include(CheckCSourceCompiles) set(CMAKE_REQUIRED_LIBRARIES "resolv") check_c_source_compiles(" +#include +#include #include #include #include @@ -235,6 +237,10 @@ int main(int argc, char* argv[]) int len = ns_rr_rdlen(rr) - 1; if (len > data[0]) len = data[0]; + if (len <= 0) { + continue; + } + char buf[256]; memcpy(buf, data + 1, len); buf[len] = 0; diff --git a/src/p2p_server.cpp b/src/p2p_server.cpp index 93024a9..f61997a 100644 --- a/src/p2p_server.cpp +++ b/src/p2p_server.cpp @@ -34,6 +34,8 @@ #ifdef _WIN32 #include #elif defined(HAVE_RES_QUERY) +#include +#include #include #include #endif @@ -528,6 +530,9 @@ void P2PServer::load_peer_list() const uint8_t* data = ns_rr_rdata(rr); const int len = std::min(ns_rr_rdlen(rr) - 1, *data); + if (len <= 0) { + continue; + } ++data; if (!saved_list.empty()) {