diff options
| author | Jakob Unterwurzacher | 2020-07-26 19:49:26 +0200 | 
|---|---|---|
| committer | Jakob Unterwurzacher | 2020-07-26 19:49:26 +0200 | 
| commit | 4572cd2103ea702d27d8d608edf6abcddc2bda29 (patch) | |
| tree | 90a802af6bbe5ecb9c6859b3ab82dc3df0212672 /tests | |
| parent | 777b95f82ffea8a25b95089343b07b29378110da (diff) | |
v2api: fix missing size translation in Lookup
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/defaults/main_test.go | 76 | 
1 files changed, 76 insertions, 0 deletions
diff --git a/tests/defaults/main_test.go b/tests/defaults/main_test.go index f59ea38..1982c90 100644 --- a/tests/defaults/main_test.go +++ b/tests/defaults/main_test.go @@ -293,3 +293,79 @@ func TestSeekData(t *testing.T) {  	}  	f.Close()  } + +/* +TestMd5sumMaintainers tries to repro this interesting +bug that was seen during gocryptfs v2.0 development: + +$ md5sum linux-3.0/MAINTAINERS linux-3.0/MAINTAINERS linux-3.0/MAINTAINERS linux-3.0/MAINTAINERS +279b6ab0491e7532132e8f32afe6c04d  linux-3.0/MAINTAINERS <-- WRONG!!!! +99cc9f0dfd86e63231b94edd43a43e02  linux-3.0/MAINTAINERS <-- correct +99cc9f0dfd86e63231b94edd43a43e02  linux-3.0/MAINTAINERS +99cc9f0dfd86e63231b94edd43a43e02  linux-3.0/MAINTAINERS + +strace shows: + +Bad +--- +fstat(3, {st_mode=S_IFREG|0644, st_size=196745, ...}) = 0 +read(3, "\n\tList of maintainers and how to"..., 32768) = 32768 +read(3, "M:\tSylwester Nawrocki <s.nawrock"..., 32768) = 32768 +read(3, "rs/scsi/eata*\n\nEATA ISA/EISA/PCI"..., 32768) = 32768 +read(3, "F:\tDocumentation/isapnp.txt\nF:\td"..., 32768) = 32768 +read(3, "hunkeey@googlemail.com>\nL:\tlinux"..., 32768) = 32768 +read(3, "ach-spear3xx/\n\nSPEAR6XX MACHINE "..., 32768) = 32768 +read(3, "", 32768)                      = 0 +lseek(3, 0, SEEK_CUR)                   = 196608 +close(3)                                = 0 +fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0x2), ...}) = 0 +write(1, "279b6ab0491e7532132e8f32afe6c04d"..., 56279b6ab0491e7532132e8f32afe6c04d  linux-3.0/MAINTAINERS + +Good +---- +fstat(3, {st_mode=S_IFREG|0644, st_size=195191, ...}) = 0 +read(3, "\n\tList of maintainers and how to"..., 32768) = 32768 +read(3, "M:\tSylwester Nawrocki <s.nawrock"..., 32768) = 32768 +read(3, "rs/scsi/eata*\n\nEATA ISA/EISA/PCI"..., 32768) = 32768 +read(3, "F:\tDocumentation/isapnp.txt\nF:\td"..., 32768) = 32768 +read(3, "hunkeey@googlemail.com>\nL:\tlinux"..., 32768) = 32768 +read(3, "ach-spear3xx/\n\nSPEAR6XX MACHINE "..., 32768) = 31351 +read(3, "", 4096)                       = 0 +lseek(3, 0, SEEK_CUR)                   = 195191 +close(3)                                = 0 +fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0x2), ...}) = 0 +write(1, "99cc9f0dfd86e63231b94edd43a43e02"..., 5699cc9f0dfd86e63231b94edd43a43e02  linux-3.0/MAINTAINERS +*/ +func TestMd5sumMaintainers(t *testing.T) { +	fn := filepath.Join(test_helpers.DefaultPlainDir, t.Name()) +	f, err := os.Create(fn) +	if err != nil { +		t.Fatal(err) +	} +	// Size of the MAINTAINERS file = 195191 +	const sizeWant = 195191 +	content := make([]byte, sizeWant) +	_, err = f.Write(content) +	if err != nil { +		t.Fatal(err) +	} +	f.Close() + +	// Remount to clear the linux kernel attr cache +	// (otherwise we would have to wait 2 seconds for the entry to expire) +	test_helpers.UnmountPanic(test_helpers.DefaultPlainDir) +	test_helpers.MountOrExit(test_helpers.DefaultCipherDir, test_helpers.DefaultPlainDir, "-zerokey") + +	cmd := exec.Command("md5sum", fn, fn, fn, fn) +	out2, err := cmd.CombinedOutput() +	out := string(out2) + +	// 195191 zero bytes have this md5sum +	const md5Want = "b99bf6917f688068acd49126f3b1b005" + +	n := strings.Count(out, md5Want) +	if n != 4 { +		t.Errorf("found %d instead of %d instances of %q", n, 4, md5Want) +		t.Logf("full output:\n%s", out) +	} +}  | 
