getaddrinfo() should not res_init() unconditionally, but allow lower
authorderaadt <deraadt@openbsd.org>
Wed, 7 Oct 2015 13:57:12 +0000 (13:57 +0000)
committerderaadt <deraadt@openbsd.org>
Wed, 7 Oct 2015 13:57:12 +0000 (13:57 +0000)
layers to decide.  The request could be AI_NUMERICHOST.  [And the process
could be tame()-constrained to not open /etc/resolv.conf]
ok eric guenther

lib/libc/asr/getaddrinfo.c

index d988b9a..e932e46 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: getaddrinfo.c,v 1.6 2015/09/14 07:38:37 guenther Exp $        */
+/*     $OpenBSD: getaddrinfo.c,v 1.7 2015/10/07 13:57:12 deraadt Exp $ */
 /*
  * Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
  *
@@ -32,7 +32,8 @@ getaddrinfo(const char *hostname, const char *servname,
        struct asr_result ar;
        int              saved_errno = errno;
 
-       res_init();
+       if ((hints->ai_flags & AI_NUMERICHOST) == 0)
+               res_init();
 
        as = getaddrinfo_async(hostname, servname, hints, NULL);
        if (as == NULL) {