Bug #203323 - Fix the FEATURES=sfperms code so that it doesn't chmod
authorZac Medico <zmedico@gentoo.org>
Fri, 28 Dec 2007 16:11:54 +0000 (16:11 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 28 Dec 2007 16:11:54 +0000 (16:11 -0000)
g-r on binaries that are both setuid and setgid. In that case, just
chmod o-r. (trunk r9061)

svn path=/main/branches/2.1.2/; revision=9075

bin/misc-functions.sh

index 3fe748760f55ac0dcba0e4d1e35590b57bb546a4..1395ff29c02111836b10429070d80cc637770e6b 100755 (executable)
@@ -422,15 +422,28 @@ preinst_sfperms() {
        fi
        # Smart FileSystem Permissions
        if hasq sfperms $FEATURES; then
+               local i
                for i in $(find "${D}" -type f -perm -4000); do
-                       ebegin ">>> SetUID: [chmod go-r] $i "
-                       chmod go-r "$i"
-                       eend $?
+                       if [ -n "$(find "$i" -perm -2000)" ] ; then
+                               ebegin ">>> SetUID and SetGID: [chmod o-r] /${i#${D}}"
+                               chmod o-r "$i"
+                               eend $?
+                       else
+                               ebegin ">>> SetUID: [chmod go-r] /${i#${D}}"
+                               chmod go-r "$i"
+                               eend $?
+                       fi
                done
                for i in $(find "${D}" -type f -perm -2000); do
-                       ebegin ">>> SetGID: [chmod o-r] $i "
-                       chmod o-r "$i"
-                       eend $?
+                       if [ -n "$(find "$i" -perm -4000)" ] ; then
+                               # This case is already handled
+                               # by the SetUID check above.
+                               true
+                       else
+                               ebegin ">>> SetGID: [chmod o-r] /${i#${D}}"
+                               chmod o-r "$i"
+                               eend $?
+                       fi
                done
        fi
 }