1131159255
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"
|