Hi people,

httpd needs to pledge `dns' for name resolution to work while loading
the configuration:

        # cat /tmp/test.conf
        server "default" {
                listen on imnotlocal port 80
        }
        # httpd -dnvf /tmp/test.conf
        Abort trap
        # dmesg | tail -n1
        httpd(18331): syscall 97 "dns"

The issue is that `imnotlocal' is not a hostname that can be looked
up without DNS requests. `localhost' and entries in /etc/hosts work
fine for example. The attached patch adds `dns' to the pledge list
in httpd.c.

-- 
        Gregor

Index: httpd.c
===================================================================
RCS file: /mnt/media/cvs/src/usr.sbin/httpd/httpd.c,v
retrieving revision 1.50
diff -u -p -r1.50 httpd.c
--- httpd.c     23 Nov 2015 20:56:14 -0000      1.50
+++ httpd.c     2 Dec 2015 21:11:49 -0000
@@ -251,7 +251,8 @@ main(int argc, char *argv[])
        setproctitle("parent");
        log_procinit("parent");
 
-       if (pledge("stdio rpath wpath cpath inet proc ioctl sendfd",
+       /* dns is required for load_config */
+       if (pledge("stdio rpath wpath cpath inet proc ioctl dns sendfd",
            NULL) == -1)
                fatal("pledge");
 

Reply via email to