Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 21 Sep 2012 13:36:54 +0200
From:      Jilles Tjoelker <jilles@stack.nl>
To:        Devin Teske <dteske@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r240770 - in head/usr.sbin/bsdconfig: . console mouse networking networking/share share startup startup/share timezone/share usermgmt/share
Message-ID:  <20120921113654.GA7865@stack.nl>
In-Reply-To: <201209210136.q8L1aKiF031991@svn.freebsd.org>
References:  <201209210136.q8L1aKiF031991@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Sep 21, 2012 at 01:36:20AM +0000, Devin Teske wrote:
> Author: dteske
> Date: Fri Sep 21 01:36:20 2012
> New Revision: 240770
> URL: http://svn.freebsd.org/changeset/base/240770

> Log:
>   Replace redirections to /dev/null with "close file-descriptor" syntax (>&-).

>   Reviewed by:	adrian (co-mentor)
>   Approved by:	adrian (co-mentor)

> [snip]

> Modified: head/usr.sbin/bsdconfig/bsdconfig
> ==============================================================================
> --- head/usr.sbin/bsdconfig/bsdconfig	Fri Sep 21 00:36:35 2012	(r240769)
> +++ head/usr.sbin/bsdconfig/bsdconfig	Fri Sep 21 01:36:20 2012	(r240770)
> @@ -73,7 +73,7 @@ usage()
>  	# Determine the maximum width of terminal/console
>  	#
>  	local max_size max_width
> -	max_size=$( stty size 2> /dev/null )
> +	max_size=$( stty size 2>&- )
>  	: ${max_size:="24 80"}
>  	max_width="${max_size#*[$IFS]}"
>  	f_dprintf "max_width=[$max_width]"
> [snip]

This change is risky because it may cause error messages to be written
to unexpected files. The first file the utility opens will be fd 2, and
if something decides to write an error message to fd 2 it will try to
write to that file.

For this reason, the kernel will automatically open /dev/null if you
execute suid/sgid binaries with fd 0, 1 and/or 2 closed.

Particularly with fd 1 (>&-) there is another danger in that the output
may fail with [EBADF] rather than being silently discarded. This may
cause unexpected failures.

If the reason is that there may be no /dev/null, then you will have to
change the environment such that there will be a /dev/null.

-- 
Jilles Tjoelker



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120921113654.GA7865>