Handle case where no hint is passed in. Found as a crash of fdm by jturner@
authorderaadt <deraadt@openbsd.org>
Thu, 8 Oct 2015 13:55:56 +0000 (13:55 +0000)
committerderaadt <deraadt@openbsd.org>
Thu, 8 Oct 2015 13:55:56 +0000 (13:55 +0000)
lib/libc/asr/getaddrinfo.c
lib/libc/asr/getaddrinfo_async.c

index e932e46..b6ce8a9 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: getaddrinfo.c,v 1.7 2015/10/07 13:57:12 deraadt Exp $ */
+/*     $OpenBSD: getaddrinfo.c,v 1.8 2015/10/08 13:55:56 deraadt Exp $ */
 /*
  * Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
  *
@@ -32,7 +32,7 @@ getaddrinfo(const char *hostname, const char *servname,
        struct asr_result ar;
        int              saved_errno = errno;
 
-       if ((hints->ai_flags & AI_NUMERICHOST) == 0)
+       if (hints && (hints->ai_flags & AI_NUMERICHOST) == 0)
                res_init();
 
        as = getaddrinfo_async(hostname, servname, hints, NULL);
index 4362da5..0a411ad 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: getaddrinfo_async.c,v 1.46 2015/10/07 13:59:34 deraadt Exp $  */
+/*     $OpenBSD: getaddrinfo_async.c,v 1.47 2015/10/08 13:55:56 deraadt Exp $  */
 /*
  * Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
  *
@@ -88,7 +88,7 @@ getaddrinfo_async(const char *hostname, const char *servname,
        struct asr_query        *as;
        char                     alias[MAXDNAME];
 
-       if ((hints->ai_flags & AI_NUMERICHOST) == 0)
+       if (hints && (hints->ai_flags & AI_NUMERICHOST) == 0)
                ac = _asr_use_resolver(asr);
        else
                ac = _asr_no_resolver();