From owner-freebsd-bugs@FreeBSD.ORG Sun Jan 23 18:30:10 2011 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 46A66106564A for ; Sun, 23 Jan 2011 18:30:10 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 01A158FC13 for ; Sun, 23 Jan 2011 18:30:10 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id p0NIU9l0072369 for ; Sun, 23 Jan 2011 18:30:09 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id p0NIU92E072365; Sun, 23 Jan 2011 18:30:09 GMT (envelope-from gnats) Resent-Date: Sun, 23 Jan 2011 18:30:09 GMT Resent-Message-Id: <201101231830.p0NIU92E072365@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, David Wimsey Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 290E4106566B for ; Sun, 23 Jan 2011 18:29:22 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22]) by mx1.freebsd.org (Postfix) with ESMTP id 1826F8FC13 for ; Sun, 23 Jan 2011 18:29:22 +0000 (UTC) Received: from red.freebsd.org (localhost [127.0.0.1]) by red.freebsd.org (8.14.4/8.14.4) with ESMTP id p0NITLKR074988 for ; Sun, 23 Jan 2011 18:29:21 GMT (envelope-from nobody@red.freebsd.org) Received: (from nobody@localhost) by red.freebsd.org (8.14.4/8.14.4/Submit) id p0NITLcM074987; Sun, 23 Jan 2011 18:29:21 GMT (envelope-from nobody) Message-Id: <201101231829.p0NITLcM074987@red.freebsd.org> Date: Sun, 23 Jan 2011 18:29:21 GMT From: David Wimsey To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Cc: Subject: conf/154246: Bad symlink created if devfs mount point does not exist on jail startup X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 Jan 2011 18:30:10 -0000 >Number: 154246 >Category: conf >Synopsis: Bad symlink created if devfs mount point does not exist on jail startup >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sun Jan 23 18:30:09 UTC 2011 >Closed-Date: >Last-Modified: >Originator: David Wimsey >Release: 8.2-RC >Organization: >Environment: FreeBSD vault-01.internal.rtsz.com 8.2-RC2 FreeBSD 8.2-RC2 #0: Wed Jan 12 17:02:35 UTC 2011 root@mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64 >Description: /etc/rc.d/jail does not currently test for the existance of the mountpoint for the devfs mount phase of jail startup. If the jail root is read only, the mount will fail, but the symlink is created anyway. >How-To-Repeat: Create a new jail in /jail/testjail rm /jail/testjail/dev /etc/rc.d/jail start /jail will contain a symlink named 'log' pointing to '../var/run/log' >Fix: Attached file aborts jail startup and uses warn to alert the user if the mount point directory doesn't exist Patch attached with submission follows: --- jail.orig 2011-01-23 13:09:29.000000000 -0500 +++ jail 2011-01-23 13:24:55.000000000 -0500 @@ -588,14 +588,21 @@ warn "${_devdir} has symlink as parent - not starting jail ${_jail}" continue fi - info "Mounting devfs on ${_devdir}" - devfs_mount_jail "${_devdir}" ${_ruleset} - # Transitional symlink for old binaries - if [ ! -L "${_devdir}/log" ]; then - __pwd="`pwd`" - cd "${_devdir}" - ln -sf ../var/run/log log - cd "$__pwd" + # Can't mount devfs if the mount point + # doesn't exist directory doesn't exist + if [ -d "${_devdir}" ]; then + info "Mounting devfs on ${_devdir}" + devfs_mount_jail "${_devdir}" ${_ruleset} + # Transitional symlink for old binaries + if [ ! -L "${_devdir}/log" ]; then + __pwd="`pwd`" + cd "${_devdir}" + ln -sf ../var/run/log log + cd "$__pwd" + fi + else + warn "${_devdir} does not exist - not starting jail ${_jail}" + continue fi fi >Release-Note: >Audit-Trail: >Unformatted: