Subject: misc/26478: /etc/rc.d/syslogd fails to add sockets of chrooted apps
To: None <gnats-bugs@gnats.NetBSD.org>
From: None <j+nbsd@2004.salmi.ch>
List: netbsd-bugs
Date: 07/30/2004 11:16:11
>Number:         26478
>Category:       misc
>Synopsis:       /etc/rc.d/syslogd fails to add sockets of chrooted apps
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    misc-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Jul 30 09:17:00 UTC 2004
>Closed-Date:
>Last-Modified:
>Originator:     Jukka Salmi
>Release:        NetBSD 2.0G, NetBSD 1.6.2_STABLE
>Organization:
>Environment:
System: NetBSD himo.salmi.ch 2.0G NetBSD 2.0G (GENERIC) #0: Fri Jul 23 18:39:25 CEST 2004 build@himo.salmi.ch:/build/nbsd/usr/src/sys/arch/i386/compile/GENERIC i386
Architecture: i386
Machine: i386
>Description:
If an application sets ${name}_chrootdir in /etc/rc.conf.d/${name}, the
syslogd rc.d script fails to add the applications log socket name to
/var/run/syslogd.sockets. Setting ${name}_chrootdir in /etc/rc.conf
instead works fine.
That's because the syslogd rc.d script doesn't know about the
${name}_chrootdir setting if that's defined in a file which wasn't
read.
>How-To-Repeat:
- set $name=YES for an application which uses the chrootdir KEYWORD
- set ${name}_chrootdir=/path/to/chroot in /etc/rc.conf.d/${name}
- restart syslogd using /etc/rc.d/syslogd
- /var/run/syslogd.sockets does _not_ contain /path/to/chroot/var/run/log
- add ${name}_chrootdir=/path/to/chroot to /etc/rc.d
- restart syslogd using /etc/rc.d/syslogd
- /var/run/syslogd.sockets _does_ contain /path/to/chroot/var/run/log
>Fix:
Probably something like

--- syslogd.orig        Fri Jul 30 10:41:19 2004
+++ syslogd     Fri Jul 30 10:42:06 2004
@@ -37,6 +37,7 @@
        #
        for _lr in $(rcorder -k chrootdir /etc/rc.d/*); do
                _l=${_lr##*/}
+               load_rc_config $_l
                eval _ldir=\$${_l}_chrootdir
                if checkyesno $_l && [ -n "$_ldir" ]; then
                        echo "${_ldir}/var/run/log" >> $_sockfile

>Release-Note:
>Audit-Trail:
>Unformatted: