Skip to contentSkip to conversation

xfstests: fix NIS detection damage

PATCH In review Dave Chinner 3 participants 4 messages Aug 6, 2010 – Aug 10, 2010

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 xfstests: fix NIS detection damage

From: Dave Chinner <[email protected]>

NIS detection wasn't tested on machines without NIS enabled, so many tests are failing on non-NIS machines. the _yp_active function has no specific return value so always evaluates as 0 (active) and the "_cat_passwd" function is called from within an awk script which is not valid as the shell may run with a sanitised environment. Hence the functions do not need specific export calls, either, as unsanitised subshells will automatically inherit the parent's environment.

---
 common.attr |    9 +++++++--
 common.rc   |    6 +++---
 2 files changed, 10 insertions(+), 5 deletions(-)
common.attr +7 -2
index 51616bc..6ba0b32 100644
@@ -90,10 +90,14 @@ _create_n_aces()
 #
 _filter_aces()
 {
-    $AWK_PROG '
+    tmp_file=`mktemp /tmp/ace.XXXXXX`
+
+    (_cat_passwd; _cat_group) > $tmp_file
+
+    $AWK_PROG -v tmpfile=$tmp_file '
 	BEGIN {
 	    FS=":"
-	    while ( "_cat_passwd" | getline > 0 ) {
+	    while ( getline <tmpfile > 0 ) {
 		idlist[$1] = $3 
 	    }
 	}
@@ -102,6 +106,7 @@ _filter_aces()
 	/^default:user/ { if ($3 in idlist) sub($3, idlist[$3]); print; next}
 	{print}
     '
+    rm -f $tmp_file
 }
 
 _filter_aces_notypes()
common.rc +3 -3
index e0cdfe6..08d4f71 100644
@@ -800,13 +800,14 @@ _yp_active()
 	local dn
 	dn=$(domainname 2>/dev/null)
 	test -n "${dn}" -a "${dn}" != "(none)"
+	echo $?
 }
 
 # cat the password file
 #
 _cat_passwd()
 {
-	[ _yp_active ] && ypcat passwd
+	[ $(_yp_active) -eq 0 ] && ypcat passwd
 	cat /etc/passwd
 }
 
@@ -814,10 +815,9 @@ _cat_passwd()
 #
 _cat_group()
 {
-	[ _yp_active ] && ypcat group
+	[ $(_yp_active) -eq 0 ] && ypcat group
 	cat /etc/group
 }
-export -f _yp_active _cat_passwd _cat_group
 
 # check for the fsgqa user on the machine
 #
Signature · 6 lines
1.7.1

_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Reviewed-by on v1 1/1
#1 lore raw
Quoted 11 lines · Dave Chinner

From: Dave Chinner <[email protected]>

NIS detection wasn't tested on machines without NIS enabled, so many tests are failing on non-NIS machines. the _yp_active function has no specific return value so always evaluates as 0 (active) and the "_cat_passwd" function is called from within an awk script which is not valid as the shell may run with a sanitised environment. Hence the functions do not need specific export calls, either, as unsanitised subshells will automatically inherit the parent's environment.

Looks good,

_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs

#2 lore raw
In reply to Dave Chinner

Dave Chinner <[email protected]> said,

Quoted 15 lines

NIS detection wasn't tested on machines without NIS enabled, so many tests are
failing on non-NIS machines. the _yp_active function has no specific return
value so always evaluates as 0 (active) and the "_cat_passwd" function is
called from within an awk script which is not valid as the shell may run with a
sanitised environment. Hence the functions do not need specific export calls,
either, as unsanitised subshells will automatically inherit the parent's
environment.

Is there any reason why getent passwd/group cannot be used for these, as it would get local and nss defined accounts? This would add support for people using LDAP as well.

Quoted 76 lines

---

common.attr |    9 +++++++--
common.rc   |    6 +++---
2 files changed, 10 insertions(+), 5 deletions(-)
common.attr +7 -2
index 51616bc..6ba0b32 100644
@@ -90,10 +90,14 @@ _create_n_aces()
 #
 _filter_aces()
 {
-    $AWK_PROG '
+    tmp_file=`mktemp /tmp/ace.XXXXXX`
+
+    (_cat_passwd; _cat_group) > $tmp_file
+
+    $AWK_PROG -v tmpfile=$tmp_file '
 	BEGIN {
 	    FS=":"
-	    while ( "_cat_passwd" | getline > 0 ) {
+	    while ( getline <tmpfile > 0 ) {
 		idlist[$1] = $3 
 	    }
 	}
@@ -102,6 +106,7 @@ _filter_aces()
 	/^default:user/ { if ($3 in idlist) sub($3, 
 idlist[$3]); print; next}
 	{print}
    '
+    rm -f $tmp_file
 }
 

_filter_aces_notypes()

common.rc +3 -3
index e0cdfe6..08d4f71 100644
@@ -800,13 +800,14 @@ _yp_active()
 	local dn
 	dn=$(domainname 2>/dev/null)
 	test -n "${dn}" -a "${dn}" != "(none)"
+	echo $?
 }
 
 # cat the password file
 #
 _cat_passwd()
 {
-	[ _yp_active ] && ypcat passwd
+	[ $(_yp_active) -eq 0 ] && ypcat passwd
 	cat /etc/passwd
 }
 
@@ -814,10 +815,9 @@ _cat_passwd()
 #
 _cat_group()
 {
-	[ _yp_active ] && ypcat group
+	[ $(_yp_active) -eq 0 ] && ypcat group
 	cat /etc/group
 }
-export -f _yp_active _cat_passwd _cat_group
 
 # check for the fsgqa user on the machine
 #
Signature · 6 lines
1.7.1

_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs

This email communication and any files transmitted with it may contain confidential and or proprietary information and is provided for the use of the intended recipient only. Any review, retransmission or dissemination of this information by anyone other than the intended recipient is prohibited. If you receive this email in error, please contact the sender and delete this communication and any copies immediately. Thank you.
http://www.encana.com

_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs

#3 lore raw
Quoted 17 lines · David

Dave Chinner <[email protected]> said,

Quoted 15 lines

NIS detection wasn't tested on machines without NIS enabled, so many tests are
failing on non-NIS machines. the _yp_active function has no specific return
value so always evaluates as 0 (active) and the "_cat_passwd" function is
called from within an awk script which is not valid as the shell may run with a
sanitised environment. Hence the functions do not need specific export calls,
either, as unsanitised subshells will automatically inherit the parent's
environment.

Quoted 3 lines

Is there any reason why getent passwd/group cannot be used for these, as it would get local and nss defined accounts? This would add support for people using LDAP as well.

If you want your test box to use this stuff, then feel free to submit patches that support this.

In general, though, I think that running anything other than a single user account on a filesystem test box is not necessary - you don't want random users to be able to log in to the machine you are running potentially destructive tests on.

Cheers,

Dave.

Signature · 7 lines
Dave Chinner
[email protected]

_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs