aboutsummaryrefslogtreecommitdiffstats
path: root/sys/linux/test/fscrypt_ext4
diff options
context:
space:
mode:
authorEric Biggers <ebiggers@google.com>2020-12-01 19:31:29 -0800
committerDmitry Vyukov <dvyukov@google.com>2020-12-03 10:03:12 +0100
commite6b0d3140b98e8456fbd089d584e932e19257d94 (patch)
tree31e17b9d8d299e6f931e133a0391e3591fa08b78 /sys/linux/test/fscrypt_ext4
parent15ab7140c0419b3ca8c88e153d9876b3c8aae0eb (diff)
sys/linux: add some basic fscrypt test programs
With fscrypt (a.k.a. ext4, f2fs, and ubifs encryption), several steps are required to get to a properly set-up encrypted directory: - Mount a filesystem that supports encryption. - Call FS_IOC_ADD_ENCRYPTION_KEY on the mountpoint. - Create a directory in the filesystem. - Call FS_IOC_SET_ENCRYPTION_POLICY on the directory, specifying the encryption key that was added earlier. - Then actually create stuff in the directory. It may be too hard for syzkaller to generate all these steps, which may explain why syzbot isn't yet properly covering the fscrypt code; see https://storage.googleapis.com/syzkaller/cover/ci-upstream-kasan-gce.html which currently shows only 5% coverage of the fs/crypto/ directory. Therefore add some test programs which do this setup on ext4 and f2fs. Note that ubifs support can't be included yet because syzkaller doesn't yet know how to mount an ubifs filesystem (which would likely require using block2mtd, as ubifs uses MTD devices rather than block devices).
Diffstat (limited to 'sys/linux/test/fscrypt_ext4')
-rw-r--r--sys/linux/test/fscrypt_ext412
1 files changed, 12 insertions, 0 deletions
diff --git a/sys/linux/test/fscrypt_ext4 b/sys/linux/test/fscrypt_ext4
new file mode 100644
index 000000000..0ba0c0f20
--- /dev/null
+++ b/sys/linux/test/fscrypt_ext4
@@ -0,0 +1,12 @@
+# This program mounts an empty ext4 filesystem that supports encryption
+# (generated by 'mkfs.ext4 -O encrypt'), then adds an encryption key to that
+# filesystem and creates an encrypted directory using that key.
+
+syz_mount_image$ext4(&(0x7f0000000000)='ext4\x00', &(0x7f0000000100)='./mnt\x00', 0x10000, 0x1d, &(0x7f0000000200)=[{&(0x7f0000010000)="1000000040000000030000002b00000005000000010000000000000000000000002000000020000010000000000000009f09c75f0000ffff53ef0100010000009f09c75f000000000000000001000000000000000b0000008000000038000000c20201006b04000076b65be2f6da47278c750525a5b65a090000000000000000", 0x80, 0x400}, {&(0x7f0000010080)="000000000000000000000000ede2de4df49d4f87b54a3176cfd4eb4f010040000c000000000000009f09c75f0000000000000000000000000000000000000000", 0x40, 0x4e0}, {&(0x7f00000100c0)="0100000000000000000000000000000000000000040100001200000000000000", 0x20, 0x560}, {&(0x7f00000100e0)="0000000000000000000000000000000000000000010400000000000000000000", 0x20, 0x640}, {&(0x7f0000010100)="000000000000000000000000000000000000000000000000000000005178aedb0300000013000000230000002b0005000200040000000000907306c205002a9c00000000000000000000000000000000000000000000000091ecd11b00000000", 0x60, 0x7e0}, {&(0x7f0000010160)="ffff05000c000080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff020000000c0001022e000000020000000c0002022e2e00000b000000dc030a026c6f73742b666f756e6400000000000000000000000000000000000000000000", 0x440, 0xc00}, {&(0x7f00000105a0)="0000000000000000000000000000000000000000000000000c0000de46b807b70b0000000c0001022e00000002000000e80302022e2e00000000000000000000", 0x40, 0x13e0}, {&(0x7f00000105e0)="0000000000000000000000000000000000000000000000000c0000de5551aadd00000000f4030000000000000000000000000000000000000000000000000000", 0x40, 0x17e0}, {&(0x7f0000010620)="0000000000000000000000000000000000000000000000000c0000de2b607f2900000000f4030000000000000000000000000000000000000000000000000000", 0x40, 0x1be0}, {&(0x7f0000010660)="0000000000000000000000000000000000000000000000000c0000de2b607f2900000000f4030000000000000000000000000000000000000000000000000000", 0x40, 0x1fe0}, {&(0x7f00000106a0)="0000000000000000000000000000000000000000000000000c0000de2b607f2900000000f4030000000000000000000000000000000000000000000000000000", 0x40, 0x23e0}, {&(0x7f00000106e0)="0000000000000000000000000000000000000000000000000c0000de2b607f2900000000f4030000000000000000000000000000000000000000000000000000", 0x40, 0x27e0}, {&(0x7f0000010720)="0000000000000000000000000000000000000000000000000c0000de2b607f2900000000f4030000000000000000000000000000000000000000000000000000", 0x40, 0x2be0}, {&(0x7f0000010760)="0000000000000000000000000000000000000000000000000c0000de2b607f2900000000f4030000000000000000000000000000000000000000000000000000", 0x40, 0x2fe0}, {&(0x7f00000107a0)="0000000000000000000000000000000000000000000000000c0000de2b607f2900000000f4030000000000000000000000000000000000000000000000000000", 0x40, 0x33e0}, {&(0x7f00000107e0)="0000000000000000000000000000000000000000000000000c0000de2b607f2900000000f4030000000000000000000000000000000000000000000000000000", 0x40, 0x37e0}, {&(0x7f0000010820)="0000000000000000000000000000000000000000000000000c0000de2b607f2900000000f4030000000000000000000000000000000000000000000000000000", 0x40, 0x3be0}, {&(0x7f0000010860)="0000000000000000000000000000000000000000000000000c0000de2b607f2900000000f4030000000000000000000000000000000000000000000000000000", 0x40, 0x3fe0}, {&(0x7f00000108a0)="0000000000000000000000000000000000000000000000000c0000de2b607f29", 0x20, 0x43e0}, {&(0x7f00000108c0)="ff07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 0x400, 0x4c00}, {&(0x7f0000010cc0)="00000000000000009f09c75f9f09c75f9f09c75f000000000000000000000000", 0x20, 0x8c00}, {&(0x7f0000010ce0)="00000000000000000000000000000000000000000000000000000000c99b0000ed410000000400009f09c75f9f09c75f9f09c75f00000000000003000200000000000800000000000af3010004000000000000000000000001000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c1f0000", 0xa0, 0x8c60}, {&(0x7f0000010d80)="00000000000000000000000000000000000000000000000000000000acff0000", 0x20, 0x8d60}, {&(0x7f0000010da0)="000000000000000000000000000000000000000000000000000000000ee30000", 0x20, 0x8de0}, {&(0x7f0000010dc0)="00000000000000000000000000000000000000000000000000000000ce1e0000", 0x20, 0x8e60}, {&(0x7f0000010de0)="000000000000000000000000000000000000000000000000000000007f6e000080810000003004049f09c75f9f09c75f9f09c75f000000000000010002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000000005620000", 0xa0, 0x8ee0}, {&(0x7f0000010e80)="000000000000000000000000000000000000000000000000000000003b570000", 0x20, 0x8fe0}, {&(0x7f0000010ea0)="00000000000000000000000000000000000000000000000000000000fbaa0000", 0x20, 0x9060}, {&(0x7f0000010ec0)="000000000000000000000000000000000000000000000000000000004ada0000c0410000003000009f09c75f9f09c75f9f09c75f00000000000002001800000000000800000000000af301000400000000000000000000000c0000000500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070fa0000", 0xa0, 0x90e0}], 0x0, &(0x7f0000010f60))
+r0 = openat(0xffffffffffffff9c, &AUTO='mnt', 0x0, 0x0)
+ioctl$FS_IOC_ADD_ENCRYPTION_KEY(r0, 0xc0506617, &AUTO={@id={0x2, 0x0, @a='\x69\xb2\xf6\xed\xee\xe7\x20\xcc\xe0\x57\x79\x37\xeb\x8a\x67\x51', [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]}, 0x40, 0x0, [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], @a='\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40'})
+mkdirat(0xffffffffffffff9c, &AUTO='mnt/encrypted_dir\x00', 0x1c0)
+r1 = openat(0xffffffffffffff9c, &AUTO='mnt/encrypted_dir\x00', 0x0, 0x0)
+ioctl$FS_IOC_SET_ENCRYPTION_POLICY(r1, 0x800c6613, &AUTO=@v2={0x2, @aes256, 0x0, [0x0, 0x0, 0x0, 0x0], @a='\x69\xb2\xf6\xed\xee\xe7\x20\xcc\xe0\x57\x79\x37\xeb\x8a\x67\x51'})
+r2 = openat(0xffffffffffffff9c, &AUTO='mnt/encrypted_dir/file\x00', 0x42, 0x180)
+write(r2, &AUTO='foo', 0x3)