aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Unterwurzacher2023-07-21 17:23:39 +0200
committerJakob Unterwurzacher2023-09-15 22:29:07 +0200
commit30c0fbd98ab3606956ea4cf9b99825b942ebe94c (patch)
treebb14941a03b3919ab58db3f01fc74d2819a5561f
parent8b1c4b0e07d72a2050f6bae29cf4b58ea1ec21c7 (diff)
tests/fsck: add malleable_base64 test filesystem
This filesystem contains filenames with non-canonical base64 encodings of the same name "foo", leading to this mess: $ ls mnt/ foo foo foo foo
-rw-r--r--tests/fsck/fsck_test.go11
-rw-r--r--tests/fsck/malleable_base64/27AG8t-XZH7G9ou2OSD_z g0
-rw-r--r--tests/fsck/malleable_base64/27AG8t-XZH7G9ou2OSD_z g0
-rw-r--r--tests/fsck/malleable_base64/27AG8t-XZH7G9ou2OSD_zg0
-rw-r--r--tests/fsck/malleable_base64/27AG8t-XZH7G9ou2OSD_zh0
-rw-r--r--tests/fsck/malleable_base64/gocryptfs.conf20
-rw-r--r--tests/fsck/malleable_base64/gocryptfs.diriv1
7 files changed, 32 insertions, 0 deletions
diff --git a/tests/fsck/fsck_test.go b/tests/fsck/fsck_test.go
index cebc86b..b70fd49 100644
--- a/tests/fsck/fsck_test.go
+++ b/tests/fsck/fsck_test.go
@@ -49,6 +49,17 @@ func TestBrokenFsV14(t *testing.T) {
}
}
+func TestMalleableBase64(t *testing.T) {
+ cmd := exec.Command(test_helpers.GocryptfsBinary, "-fsck", "-extpass", "echo test", "malleable_base64")
+ outBin, err := cmd.CombinedOutput()
+ out := string(outBin)
+ t.Log(out)
+ code := test_helpers.ExtractCmdExitCode(err)
+ if code != exitcodes.FsckErrors {
+ t.Errorf("wrong exit code, have=%d want=%d", code, exitcodes.FsckErrors)
+ }
+}
+
func TestExampleFses(t *testing.T) {
dirfd, err := os.Open("../example_filesystems")
if err != nil {
diff --git a/tests/fsck/malleable_base64/27AG8t-XZH7G9ou2OSD_z g b/tests/fsck/malleable_base64/27AG8t-XZH7G9ou2OSD_z g
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/fsck/malleable_base64/27AG8t-XZH7G9ou2OSD_z g
diff --git a/tests/fsck/malleable_base64/27AG8t-XZH7G9ou2OSD_z g b/tests/fsck/malleable_base64/27AG8t-XZH7G9ou2OSD_z g
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/fsck/malleable_base64/27AG8t-XZH7G9ou2OSD_z g
diff --git a/tests/fsck/malleable_base64/27AG8t-XZH7G9ou2OSD_zg b/tests/fsck/malleable_base64/27AG8t-XZH7G9ou2OSD_zg
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/fsck/malleable_base64/27AG8t-XZH7G9ou2OSD_zg
diff --git a/tests/fsck/malleable_base64/27AG8t-XZH7G9ou2OSD_zh b/tests/fsck/malleable_base64/27AG8t-XZH7G9ou2OSD_zh
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/fsck/malleable_base64/27AG8t-XZH7G9ou2OSD_zh
diff --git a/tests/fsck/malleable_base64/gocryptfs.conf b/tests/fsck/malleable_base64/gocryptfs.conf
new file mode 100644
index 0000000..6098756
--- /dev/null
+++ b/tests/fsck/malleable_base64/gocryptfs.conf
@@ -0,0 +1,20 @@
+{
+ "Creator": "gocryptfs v2.4.0-dirty",
+ "EncryptedKey": "3RHFBE1hurYP6D4VsdqhQb3Bd/kd3vYsZohgpc2lDhwIM8lsk8FHOgZEtfG2HfEFsV374B6rktbXmrBBiperqw==",
+ "ScryptObject": {
+ "Salt": "9pQrdZWjpp1cTjuWNB/SqcLw+HOYeOTECga2yIpjjUU=",
+ "N": 1024,
+ "R": 8,
+ "P": 1,
+ "KeyLen": 32
+ },
+ "Version": 2,
+ "FeatureFlags": [
+ "HKDF",
+ "GCMIV128",
+ "DirIV",
+ "EMENames",
+ "LongNames",
+ "Raw64"
+ ]
+}
diff --git a/tests/fsck/malleable_base64/gocryptfs.diriv b/tests/fsck/malleable_base64/gocryptfs.diriv
new file mode 100644
index 0000000..d8a6e22
--- /dev/null
+++ b/tests/fsck/malleable_base64/gocryptfs.diriv
@@ -0,0 +1 @@
+cTh{½ÚEfDbúüÕ«Û \ No newline at end of file