freebsd-dev/etc/rc.d/amd
Mike Makonnen 1131159255 The amd_map_program knob can potentially contain a command whose output
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
2007-10-19 22:55:42 +00:00

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"