rc.subr: disabling globbing while processing devfs rules
John Baldwin
jhb at freebsd.org
Mon Apr 1 19:01:57 UTC 2013
On Saturday, March 23, 2013 4:41:41 am Andriy Gapon wrote:
>
> Any objections / concerns for the following change?
>
> An example.
> This rule in devfs.rules:
> add path da* mode 660 group operator
> and this directory:
> /data
> result in the following rule being actually installed:
> 100 path data group operator mode 660
>
> Of course, I could refine the pattern in the rule, but I shouldn't have to do
> it, because the pattern is for /dev/ entries, not arbitrary files in the
> filesystem namespace.
>
> commit 7ce5e9ca5c107e2669f18efa472c1ab14999247c
> Author: Andriy Gapon <avg at icyb.net.ua>
> Date: Sat Mar 23 10:29:39 2013 +0200
>
> rc.subr: disabling globbing while processing devfs rules in
> devfs_rulesets_from_file()
>
> The rules themselves typically have shell-like patterns and it is incorrect
> when they get replaced with matching filesystem entries.
>
> Shell magic by: jilles
>
> diff --git a/etc/rc.subr b/etc/rc.subr
> index f37ede7..9952c82 100644
> --- a/etc/rc.subr
> +++ b/etc/rc.subr
> @@ -1301,7 +1301,7 @@ make_symlink()
> #
> devfs_rulesets_from_file()
> {
> - local file _err _me
> + local file _err _me _opts
> file="$1"
> _me="devfs_rulesets_from_file"
> _err=0
> @@ -1314,6 +1314,11 @@ devfs_rulesets_from_file()
> debug "$_me: no such file ($file)"
> return 0
> fi
> +
> + # Disable globbing so that the rule patterns are not expanded
> + # by accident with matching filesystem entries.
> + _opts=$-; set -f
> +
> debug "reading rulesets from file ($file)"
> { while read line
> do
> @@ -1360,6 +1365,7 @@ devfs_rulesets_from_file()
> break
> fi
> done } < $file
> + case $_opts in *f*) ;; *) set +f ;; esac
> return $_err
> }
Why not use 'local -' instead of the $- magic? That is:
devfs_rulesets_from_file()
{
local file _err _me -
...
set -f
...
}
That would seem to be simpler.
--
John Baldwin
More information about the freebsd-current
mailing list