diff options
Diffstat (limited to '')
-rw-r--r-- | dirmngr/dns-stuff.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/dirmngr/dns-stuff.c b/dirmngr/dns-stuff.c index b3ad9bcd1..1bf6cfcd9 100644 --- a/dirmngr/dns-stuff.c +++ b/dirmngr/dns-stuff.c @@ -1086,10 +1086,9 @@ getsrv (const char *name,struct srventry **list) return -1; r = res_query (name, C_IN, T_SRV, answer, sizeof answer); - if (header->rcode != NOERROR || !(count=ntohs (header->ancount))) + if (r < sizeof (HEADER) || r > sizeof answer + || header->rcode != NOERROR || !(count=ntohs (header->ancount))) return 0; /* Error or no record found. */ - if (r < sizeof (HEADER) || r > sizeof answer) - return -1; emsg = &answer[r]; pt = &answer[sizeof(HEADER)]; |