diff --git a/smmapdfw/libsmmapdfw/htdns.c b/smmapdfw/libsmmapdfw/htdns.c index e1a6b9d..cf1f6eb 100644 --- a/smmapdfw/libsmmapdfw/htdns.c +++ b/smmapdfw/libsmmapdfw/htdns.c @@ -350,10 +350,25 @@ static void** get_rrs(char *domain, int qtype) { } mx_rdata_t** get_mx_rrs(char *domain) { - return (mx_rdata_t**) get_rrs(domain, T_MX); + if (domain == NULL) + return NULL; + + rdata_t **rdata = get_rrs(domain, T_MX); + + if ((NULL == rdata) || (NULL == *rdata)) { + return NULL; + } else if ((*rdata)->type != T_MX) { + free_rrs((void**)rdata); + return NULL; + } else { + return (mx_rdata_t**) rdata; + } } a_rdata_t** get_a_rrs(char *domain) { + if (domain == NULL) + return NULL; + rdata_t **rdata, **rdata2; cname_rdata_t **cname_rdata; @@ -376,6 +391,9 @@ a_rdata_t** get_a_rrs(char *domain) { #define min(A,B) ((A