From owner-freebsd-bugs@FreeBSD.ORG Sun Dec 4 20:10:08 2005 Return-Path: X-Original-To: freebsd-bugs@hub.freebsd.org Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A151916A41F for ; Sun, 4 Dec 2005 20:10:08 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id F064C43D58 for ; Sun, 4 Dec 2005 20:10:06 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id jB4KA6QD089290 for ; Sun, 4 Dec 2005 20:10:06 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id jB4KA6NV089289; Sun, 4 Dec 2005 20:10:06 GMT (envelope-from gnats) Resent-Date: Sun, 4 Dec 2005 20:10:06 GMT Resent-Message-Id: <200512042010.jB4KA6NV089289@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, NIIMI Satoshi Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id CD75216A41F for ; Sun, 4 Dec 2005 20:04:47 +0000 (GMT) (envelope-from sa2c@sa2c.net) Received: from sakura.and.or.jp (sakura.and.or.jp [59.106.20.85]) by mx1.FreeBSD.org (Postfix) with ESMTP id 27B3A43D9E for ; Sun, 4 Dec 2005 20:04:20 +0000 (GMT) (envelope-from sa2c@sa2c.net) Received: from sakura.and.or.jp (localhost [127.0.0.1]) by sakura.and.or.jp (Postfix) with ESMTP id 5A30361C1E for ; Mon, 5 Dec 2005 05:04:12 +0900 (JST) Received: from berkeley.l.sa2c.net (berkeley.vpn.and.or.jp [10.46.49.3]) by sakura.and.or.jp (Postfix) with ESMTP id 3728D61C1B for ; Mon, 5 Dec 2005 05:04:12 +0900 (JST) Received: by berkeley.l.sa2c.net (Postfix, from userid 3104) id 295761145B; Mon, 5 Dec 2005 05:04:12 +0900 (JST) Message-Id: <20051204200412.295761145B@berkeley.l.sa2c.net> Date: Mon, 5 Dec 2005 05:04:12 +0900 (JST) From: NIIMI Satoshi To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: Subject: conf/89945: rc script in /usr should be run in subshell X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: NIIMI Satoshi List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Dec 2005 20:10:08 -0000 >Number: 89945 >Category: conf >Synopsis: rc script in /usr should be run in subshell >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sun Dec 04 20:10:06 GMT 2005 >Closed-Date: >Last-Modified: >Originator: NIIMI Satoshi >Release: FreeBSD 6.0-RELEASE i386 >Organization: >Environment: System: FreeBSD freebsd7.localdomain 7.0-CURRENT FreeBSD 7.0-CURRENT #0: Mon Dec 5 00:32:37 JST 2005 root@freebsd7.localdomain:/usr/obj/usr/src/sys/GENERIC i386 >Description: /usr/*/rc.d/*.sh should be run in subshell instead of in current shell. >How-To-Repeat: After "pkg_add -r portupgrade", sshd won't start on boot. >Fix: --- rc.subr.diff begins here --- Index: rc.subr =================================================================== RCS file: /home/ncvs/src/etc/rc.subr,v retrieving revision 1.44 diff -u -r1.44 rc.subr --- rc.subr 2 Dec 2005 20:06:07 -0000 1.44 +++ rc.subr 4 Dec 2005 19:57:49 -0000 @@ -832,6 +832,9 @@ eval unset ${_arg}_cmd ${_arg}_precmd ${_arg}_postcmd case "$_file" in + /usr/*) # user scripts + run_in_subshell + ;; *.sh) # run in current shell set $_arg; . $_file ;; @@ -839,19 +842,24 @@ warn "Ignoring scratch file $_file" ;; *) # run in subshell - if [ -x $_file ]; then - if [ -n "$rc_fast_and_loose" ]; then - set $_arg; . $_file - else - ( trap "echo Script $_file interrupted; kill -QUIT $$" 3 - trap "echo Script $_file interrupted; exit 1" 2 - set $_arg; . $_file ) - fi - fi + run_in_subshell ;; esac } +run_in_subshell() +{ + if [ -x $_file ]; then + if [ -n "$rc_fast_and_loose" ]; then + set $_arg; . $_file + else + ( trap "echo Script $_file interrupted; kill -QUIT $$" 3 + trap "echo Script $_file interrupted; exit 1" 2 + set $_arg; . $_file ) + fi + fi +} + # # load_rc_config # Source in the configuration file for a given command. --- rc.subr.diff ends here --- >Release-Note: >Audit-Trail: >Unformatted: