is then used as an argument to the amd program. This outpu may contain newlines, but the script did not take care to strip those newlines before apending it to rc_flags. Revision 1.72 of rc.subr(8) introduced changes that exposed this problem (specifically putting the final eval'ed command in quotes).[1] Also, for correctness' sake, shell directives appended to the command-line by the script should go into command_args, and not appended directly to rc_flags. Reported by: John E Hein <jhein@timing.com> [1] Tested by: John E Hein <jhein@timing.com> MFC after: 1 week
58 lines
965 B
Bash
Executable File
58 lines
965 B
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# $NetBSD: amd,v 1.10 2002/04/29 12:08:17 lukem Exp $
|
|
# $FreeBSD$
|
|
#
|
|
|
|
# PROVIDE: amd
|
|
# REQUIRE: rpcbind ypbind nfsclient cleanvar ldconfig
|
|
# BEFORE: DAEMON
|
|
# KEYWORD: nojail
|
|
|
|
. /etc/rc.subr
|
|
|
|
name="amd"
|
|
rcvar=`set_rcvar`
|
|
command="/usr/sbin/${name}"
|
|
start_precmd="amd_precmd"
|
|
command_args="&"
|
|
extra_commands="reload"
|
|
|
|
amd_precmd()
|
|
{
|
|
if ! checkyesno nfs_client_enable; then
|
|
force_depend nfsclient || return 1
|
|
fi
|
|
|
|
if ! checkyesno rpcbind_enable && \
|
|
! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1
|
|
then
|
|
force_depend rpcbind || return 1
|
|
fi
|
|
|
|
case ${amd_map_program} in
|
|
[Nn][Oo] | '')
|
|
;;
|
|
*)
|
|
rc_flags="${rc_flags} `echo $(eval ${amd_map_program})`"
|
|
;;
|
|
esac
|
|
|
|
case "${amd_flags}" in
|
|
'')
|
|
if [ ! -r /etc/amd.conf ]; then
|
|
warn 'amd will not load without arguments'
|
|
return 1
|
|
fi
|
|
;;
|
|
*)
|
|
rc_flags="-p ${rc_flags}"
|
|
command_args=" > /var/run/amd.pid 2> /dev/null"
|
|
;;
|
|
esac
|
|
return 0
|
|
}
|
|
|
|
load_rc_config $name
|
|
run_rc_command "$1"
|