mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-02-17 04:41:59 +02:00
Do the setgid test instead of bailing.
This commit is contained in:
@@ -25,8 +25,6 @@ cd $pwd || framework_failure=1
|
||||
mkdir $tmp || framework_failure=1
|
||||
cd $tmp || framework_failure=1
|
||||
|
||||
. $abs_srcdir/../setgid-check
|
||||
|
||||
umask 0
|
||||
mkdir d || framework_failure=1
|
||||
|
||||
@@ -36,13 +34,11 @@ chmod g+s d 2> /dev/null ||
|
||||
# it may happen that when you create a directory, its group isn't one
|
||||
# to which you belong. When that happens, the above chmod fails. So
|
||||
# here, upon failure, we try to set the group, then rerun the chmod command.
|
||||
group=${COREUTILS_GROUP-`(id -g || /usr/xpg4/bin/id -g) 2>/dev/null`}
|
||||
if test "$group"; then
|
||||
chgrp "$group" d || framework_failure=1
|
||||
chmod g+s d || framework_failure=1
|
||||
else
|
||||
framework_failure=1
|
||||
fi
|
||||
|
||||
id_g=`id -g` &&
|
||||
test -n "$id_g" &&
|
||||
chgrp "$id_g" d &&
|
||||
chmod g+s d || framework_failure=1
|
||||
}
|
||||
|
||||
if test $framework_failure = 1; then
|
||||
@@ -54,20 +50,6 @@ fail=0
|
||||
|
||||
chmod 755 d
|
||||
|
||||
# To be compatible with chmod from other vendors,
|
||||
# GNU chmod must not reset a directory's setgid bit.
|
||||
# The latest POSIX draft (d5) allows either behavior. It says:
|
||||
#
|
||||
# For regular files, for each bit set in the octal number
|
||||
# corresponding to the set-user-ID-on-execution or the
|
||||
# set-group-ID-on-execution, bits shown in the following table shall
|
||||
# be set; if these bits are not set in the octal number, they are
|
||||
# cleared. For other file types, it is implementation-defined whether
|
||||
# or not requests to set or clear the set-user-ID-on-execution or
|
||||
# set-group-ID-on-execution bits are honored.
|
||||
|
||||
# FIXME: consider changing GNU chmod to work like other versions of chmod.
|
||||
# For now, this test simply confirms the existing behavior.
|
||||
p=`ls -ld d|sed 's/ .*//'`; case $p in drwxr-xr-x);; *) fail=1;; esac
|
||||
case `ls -ld d` in drwxr-sr-x*);; *) fail=1;; esac
|
||||
|
||||
(exit $fail); exit $fail
|
||||
|
||||
Reference in New Issue
Block a user