From 4d9d2da4a8815397ef22b3ba70e70f372260cb3c Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 17 Jul 2006 03:11:51 +0000 Subject: [PATCH] Do the setgid test instead of bailing. --- tests/chmod/setgid | 30 ++++++------------------------ 1 file changed, 6 insertions(+), 24 deletions(-) diff --git a/tests/chmod/setgid b/tests/chmod/setgid index c3248a3d6..93a2c2e81 100755 --- a/tests/chmod/setgid +++ b/tests/chmod/setgid @@ -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 -- 2.34.1