the main process must chdir to /, since it cannot have daemon() do the
authorderaadt <deraadt@openbsd.org>
Fri, 31 Aug 2018 18:45:02 +0000 (18:45 +0000)
committerderaadt <deraadt@openbsd.org>
Fri, 31 Aug 2018 18:45:02 +0000 (18:45 +0000)
commit50c479e07c9383d6fc342b068c80afc023803bd1
tree611769191fd090860cba15e2851fa10bc7197d4c
parentb894dda755907b15e585859d868c123aa8a70235
the main process must chdir to /, since it cannot have daemon() do the
job at startup.  After much anguish I accept dlg's solution of chdir
for the problem ("starting ntpd on a filesystem I want to unmount"),
but we cannot change the main-process daemon() call.  Why?  Because
the ntpd privsep design predates more modern designs where the config
file is parsed once, and configuration marshalled to the fork+exec
children.  Instead each ntpd process re-parses the config, and if
we chdir before fork+exec startup, it will move the basedir causing
-f "relativepath" to fail.

discussed with florian
usr.sbin/ntpd/ntpd.c