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.
This commit is contained in:
Dmitry Podgorny
2016-09-02 12:39:10 +03:00
parent 3e77afb27e
commit a45af3a929

View File

@@ -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");