gocryptfs -init: fix wrong exit code on non-empty dir

Fixes https://github.com/rfjakob/gocryptfs/pull/503
This commit is contained in:
Jakob Unterwurzacher 2020-09-06 11:35:25 +02:00
parent 598e5f385e
commit 993b19c19c
2 changed files with 21 additions and 1 deletions

View File

@ -63,7 +63,7 @@ func initDir(args *argContainer) {
err = isEmptyDir(args.cipherdir)
if err != nil {
tlog.Fatal.Printf("Invalid cipherdir: %v", err)
os.Exit(exitcodes.Init)
os.Exit(exitcodes.CipherDir)
}
}
// Choose password for config file

View File

@ -800,3 +800,23 @@ func TestPassfileX2(t *testing.T) {
test_helpers.MountOrFatal(t, dir, mnt, "-passfile="+passfile1, "-passfile="+passfile2)
defer test_helpers.UnmountPanic(mnt)
}
// TestInitNotEmpty checks that `gocryptfs -init` returns the right error code
// if CIPHERDIR is not empty. See https://github.com/rfjakob/gocryptfs/pull/503
func TestInitNotEmpty(t *testing.T) {
dir := test_helpers.TmpDir + "/" + t.Name()
if err := os.Mkdir(dir, 0700); err != nil {
t.Fatal(err)
}
if err := ioutil.WriteFile(dir+"/foo", nil, 0700); err != nil {
t.Fatal(err)
}
cmd := exec.Command(test_helpers.GocryptfsBinary, "-init", "-extpass", "echo test", dir)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
err := cmd.Run()
exitCode := test_helpers.ExtractCmdExitCode(err)
if exitCode != exitcodes.CipherDir {
t.Fatalf("wrong exit code: have=%d, want=%d", exitCode, exitcodes.CipherDir)
}
}