diff options
author | 2025-01-19 09:59:41 -0500 | |
---|---|---|
committer | 2025-01-19 17:49:10 +0100 | |
commit | 8a32d46b204396255462712afbef16e227423f68 (patch) | |
tree | 9cba28c2a429141bb3c521c6c1bbb7059a227c62 | |
parent | efivarfs: prevent setting of zero size on the inodes in the cache (diff) | |
download | wireguard-linux-8a32d46b204396255462712afbef16e227423f68.tar.xz wireguard-linux-8a32d46b204396255462712afbef16e227423f68.zip |
selftests/efivarfs: add check for disallowing file truncation
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>
-rwxr-xr-x | tools/testing/selftests/efivarfs/efivarfs.sh | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tools/testing/selftests/efivarfs/efivarfs.sh b/tools/testing/selftests/efivarfs/efivarfs.sh index d374878cc0ba..96677282789b 100755 --- a/tools/testing/selftests/efivarfs/efivarfs.sh +++ b/tools/testing/selftests/efivarfs/efivarfs.sh @@ -202,6 +202,28 @@ test_invalid_filenames() 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 @@ -214,5 +236,6 @@ run_test test_zero_size_delete run_test test_open_unlink run_test test_valid_filenames run_test test_invalid_filenames +run_test test_no_set_size exit $rc |