Now that the ability of arbitrary writes to set the inode size is
fixed, verify that a variable file accepts a truncation operation but
does not change the stat size because of it.
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
        exit $ret
 }
 
+test_no_set_size()
+{
+       local attrs='\x07\x00\x00\x00'
+       local file=$efivarfs_mount/$FUNCNAME-$test_guid
+       local ret=0
+
+       printf "$attrs\x00" > $file
+       [ -e $file -a -s $file ] || exit 1
+       chattr -i $file
+       : > $file
+       if [ $? != 0 ]; then
+               echo "variable file failed to accept truncation"
+               ret=1
+       elif [ -e $file -a ! -s $file ]; then
+               echo "file can be truncated to zero size"
+               ret=1
+       fi
+       rm $file || exit 1
+
+       exit $ret
+}
+
 check_prereqs
 
 rc=0
 run_test test_open_unlink
 run_test test_valid_filenames
 run_test test_invalid_filenames
+run_test test_no_set_size
 
 exit $rc