dirmngr: Improve error handling.
authorJustus Winter <justus@g10code.com>
Tue, 1 Dec 2015 12:24:38 +0000 (13:24 +0100)
committerJustus Winter <justus@g10code.com>
Tue, 1 Dec 2015 12:24:38 +0000 (13:24 +0100)
* dirmngr/dns-stuff.c (getsrv): Avoid looking at 'header' before
checking for errors, but silently ignore errors when looking up SRV
records.
--
This is a follow-up to 946faaff.

Signed-off-by: Justus Winter <justus@g10code.com>
dirmngr/dns-stuff.c

index b3ad9bc..1bf6cfc 100644 (file)
@@ -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)];