svn commit: r240770 - in head/usr.sbin/bsdconfig: . console mouse networking networking/share share startup startup/share timezone/share usermgmt/share

Jilles Tjoelker jilles at stack.nl
Fri Sep 21 11:36:59 UTC 2012


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


More information about the svn-src-head mailing list