From f4d709c0dd904f026ef840a94dc62a8ef9a38784 Mon Sep 17 00:00:00 2001 From: SChernykh Date: Tue, 7 Nov 2023 12:34:36 +0100 Subject: [PATCH] Util: more checks in `get_dns_txt_records_base` --- src/util.cpp | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/util.cpp b/src/util.cpp index c76fa68..bf5210d 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -508,22 +508,29 @@ bool get_dns_txt_records_base(const std::string& host, CallbackpNext) { - for (size_t j = 0; j < p->Data.TXT.dwStringCount; ++j) { - const char* s = p->Data.TXT.pStringArray[j]; - const size_t n = strlen(s); - if (n > 0) { - callback(s, n); + for (PDNS_RECORD p = pQueryResults; p; p = p->pNext) { + for (size_t j = 0; j < p->Data.TXT.dwStringCount; ++j) { + const char* s = p->Data.TXT.pStringArray[j]; + if (s) { + const size_t n = strlen(s); + if (n > 0) { + callback(s, n); + } + } } } - } - DnsRecordListFree(pQueryResults, DnsFreeRecordList); + DnsRecordListFree(pQueryResults, DnsFreeRecordList); + } + catch (...) { + return false; + } return true; #elif defined(HAVE_RES_QUERY)