From a45af3a92921641bc6c911a646cbb4c65dd001a8 Mon Sep 17 00:00:00 2001 From: Dmitry Podgorny Date: Fri, 2 Sep 2016 12:39:10 +0300 Subject: [PATCH] resolver: srv_rr_list can be uninitialised Resolver assumes that srv_rr_list is empty at the beginning. Make it so explicitly and let user pass uninitialised list as argument. --- src/resolver.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/resolver.c b/src/resolver.c index 669aed2..087ef1e 100644 --- a/src/resolver.c +++ b/src/resolver.c @@ -179,6 +179,8 @@ int resolver_srv_lookup_buf(xmpp_ctx_t *ctx, const unsigned char *buf, struct message_header header; resolver_srv_rr_t *rr; + *srv_rr_list = NULL; + if (len < MESSAGE_HEADER_LEN) return XMPP_DOMAIN_NOT_FOUND; @@ -244,6 +246,8 @@ int resolver_srv_lookup(xmpp_ctx_t *ctx, const char *service, const char *proto, xmpp_snprintf(fulldomain, sizeof(fulldomain), "_%s._%s.%s", service, proto, domain); + *srv_rr_list = NULL; + #ifdef _WIN32 set = resolver_win32_srv_lookup(ctx, fulldomain, srv_rr_list); if (set == XMPP_DOMAIN_FOUND) @@ -407,7 +411,6 @@ static int resolver_win32_srv_lookup(xmpp_ctx_t *ctx, const char *fulldomain, DNS_STATUS (WINAPI * pDnsQuery_A)(PCSTR, WORD, DWORD, PIP4_ARRAY, PDNS_RECORD*, PVOID*); void (WINAPI * pDnsRecordListFree)(PDNS_RECORD, DNS_FREE_TYPE); - *srv_rr_list = NULL; if (hdnsapi = LoadLibrary("dnsapi.dll")) { pDnsQuery_A = (void *)GetProcAddress(hdnsapi, "DnsQuery_A"); pDnsRecordListFree = (void *)GetProcAddress(hdnsapi, "DnsRecordListFree");