lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 23 Nov 2011 13:11:53 -0600
From:	Eric Sandeen <sandeen@...hat.com>
To:	xfs-oss <xfs@....sgi.com>
CC:	ext4 development <linux-ext4@...r.kernel.org>
Subject: [PATCH] xfstests: make xattr test 020 generic

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

020 can be made generic by limiting the total attribute space
used in the tests as appropriate.  Unless we know we have a
large-xattr-capable fs, limit total space to a bit under one
fs block.

Now passes for me on ext3, ext4, btrfs, as well as xfs.

Signed-off-by: Eric Sandeen <sandeen@...hat.com>
- ---

incidentally the test used to send a 100k xattr value to
the attr command on xfs; it wrote only 64k but did not complain.
Feature or bug?

diff --git a/020 b/020
index 56b9c3c..d196318 100755
- --- a/020
+++ b/020
@@ -80,7 +80,7 @@ _attr_list()
 
 
 # real QA test starts here
- -_supported_fs xfs udf
+_supported_fs generic
 _supported_os Linux
 
 _require_attrs
@@ -119,9 +119,19 @@ _attr_list $testfile
 
 echo "*** add lots of attributes"
 v=0
- -while [ $v -lt 1000 ]
+
+# set maximum total attr space based on fs type
+if [ "$FSTYP" == "xfs" -o "$FSTYP" == "udf" ]; then
+	NUMATTRS=1000
+else # Assume max ~1 block of attrs
+	BLOCK_SIZE=`stat -f $TEST_DEV | grep "Block size" | cut -d " " -f3`
+	# user.attribute_XXX="value.XXX" is about 32 bytes; leave some overhead
+	let NUMATTRS=$BLOCK_SIZE/40
+fi
+
+while [ $v -lt $NUMATTRS ]
 do
- -    echo "value_$v" | attr -s "attribute_$v" $testfile >>$seq.full
+    echo -n "value_$v" | attr -s "attribute_$v" $testfile >>$seq.full
     if [ $? -ne 0 ]
     then
         echo "!!! failed to add \"attribute_$v\""
@@ -139,11 +149,12 @@ getfattr --absolute-names $testfile \
     	/^#/ { next }
 	/^[ 	]*$/ { next }
         { l++ } 
- -	END {print "   *** " (l - 1) " attribute(s)" }'
+	END {print "   *** " (l - 1) " attribute(s)" }' \
+    | sed s/$NUMATTRS/NUMATTRS/
 
 echo "*** remove lots of attributes"
 v=0
- -while [ $v -lt 1000 ]
+while [ $v -lt $NUMATTRS ]
 do
     if ! $ATTR_PROG -r "attribute_$v" $testfile >>$seq.full
     then
@@ -156,11 +167,21 @@ done
 
 _attr_list $testfile
 
+# Set max attr vlue size based on fs type
+if [ "$FSTYP" == "xfs" -o "$FSTYP" == "udf" -o "$FSTYP" == "btrfs" ]; then
+	ATTRVAL_SIZE=64
+else # Assume max ~1 block of attrs
+	BLOCK_SIZE=`stat -f $TEST_DEV | grep "Block size" | cut -d " " -f3`
+	# leave a little overhead
+	let ATTRVAL_SIZE=$BLOCK_SIZE-256
+fi
+
 echo "*** really long value"
- -dd if=/dev/zero bs=1024 count=100 2>/dev/null \
+dd if=/dev/zero bs=1 count=$ATTRVAL_SIZE 2>/dev/null \
     | _attr -s "long_attr" $testfile >/dev/null
- -    
- -_attr -g "long_attr" $testfile | tail -n +2 | od -t x1
+
+OCTAL_SIZE=`echo "obase=8; $ATTRVAL_SIZE" | bc` 
+_attr -q -g "long_attr" $testfile | od -t x1 | sed -e "s/^0*$OCTAL_SIZE$/ATTRSIZE/"
 _attr -r "long_attr" $testfile >/dev/null
 
 
diff --git a/020.out b/020.out
index 3e444be..b303200 100644
- --- a/020.out
+++ b/020.out
@@ -40,7 +40,7 @@ user.snrub="fish2\012"
 
 *** add lots of attributes
 *** check
- -   *** 1000 attribute(s)
+   *** NUMATTRS attribute(s)
 *** remove lots of attributes
    *** print attributes
 # file: <TESTFILE>
@@ -49,8 +49,7 @@ user.snrub="fish2\012"
 *** really long value
 0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
- -0200000 0a
- -0200001
+ATTRSIZE
 *** set/get/remove really long names (expect failure)
 attr_set: Invalid argument
 Could not set "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" for <TESTFILE>

-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBAgAGBQJOzUV4AAoJECCuFpLhPd7gZ6QP/39tqAYI/Luh4s8YaMADgop0
w/zH6swZDZni2/iBgBbfvx4Gg+UEYYVZ3CnJ6Q5LnIUbD/L5/IXNDxmxmin4782C
M8Hdl1Tjy/tQDu/AtIPI7e9FOAxCJVO781ArO9BXwgtPEk8CJVZFOnQ1ZZkpyI0T
JVKS+I/iuDxX97kYLCCwLkk8tVPzr8X61nymrwSkf/YMxlcMXrVuGbr1Usoac97o
QyRy53ivePGdW62eRVpUSHNU7jm1SaCAWX6OrnC31EzRwUdpeO8yHiVEFhI0he3x
g1ODe/fxCoXbT+EkmEAWbBx6TvyscgOTWcQ7tGWmcNkjP2xN7jVde7NJDrRWAS2C
aFzC3qbtl6Bw9AMX3roglxWFbFsheggtspDiO/El4Vx/zEbdMEFvrAP51rtRqFha
VK6W98FweFY1Zb73ZRqR7EozFN86JXroEIPnvLlqoxcRF2M0iRerZuf/8CWE/rqb
LAwfmZbDmXlPpK+lskbS3LJnMJZ6LaDnx64z0EUQFRT3jmSRKV949E2/V/mtx/t4
Fj9ECrGbD+f7fBe7kqdkb6RdtCDCU4ZdD20G++n7+Uiype82cUrPnrPBxDrDOD3Q
BQRYCsBsRIyVXrcLsZ0YicAPAPJGa8bxd0Hg2ZI4WTnBEpQhuvXdk69IHBMX3NFN
aMIIVDdshJ+bPCC/0jor
=A/u5
-----END PGP SIGNATURE-----
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ