From 18f354d84b4ae58c620474a544b9929662b108d8 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Sun, 14 May 2017 13:14:00 +0200 Subject: [PATCH] main: password change: exit with code 12 on wrong password We used to return code 8, now we return code 12 as documented in the man page. Also adds a test. --- main.go | 2 +- tests/cli/cli_test.go | 37 +++++++++++++++++++++++++++++++++---- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/main.go b/main.go index e522f6b..27cbf1f 100644 --- a/main.go +++ b/main.go @@ -76,7 +76,7 @@ func loadConfig(args *argContainer) (masterkey []byte, confFile *configfile.Conf func changePassword(args *argContainer) { masterkey, confFile, err := loadConfig(args) if err != nil { - os.Exit(exitcodes.LoadConf) + exitcodes.Exit(err) } tlog.Info.Println("Please enter your new password.") newPw := readpassword.Twice(args.extpass) diff --git a/tests/cli/cli_test.go b/tests/cli/cli_test.go index 905a890..f5eaf9e 100644 --- a/tests/cli/cli_test.go +++ b/tests/cli/cli_test.go @@ -318,10 +318,10 @@ func TestInitTrailingGarbage(t *testing.T) { } } -// TestPasswordIncorrect makes sure the correct exit code is used when the password -// was incorrect -func TestPasswordIncorrect(t *testing.T) { - cDir := test_helpers.InitFS(t) +// TestMountPasswordIncorrect makes sure the correct exit code is used when the password +// was incorrect while mounting +func TestMountPasswordIncorrect(t *testing.T) { + cDir := test_helpers.InitFS(t) // Create filesystem with password "test" pDir := cDir + ".mnt" err := test_helpers.Mount(cDir, pDir, false, "-extpass", "echo WRONG", "-wpanic=false") // vvvvvvvvvvvvvv OMG vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv @@ -330,3 +330,32 @@ func TestPasswordIncorrect(t *testing.T) { t.Errorf("want=%d, got=%d", exitcodes.PasswordIncorrect, exitCode) } } + +// TestPasswdPasswordIncorrect makes sure the correct exit code is used when the password +// was incorrect while changing the password +func TestPasswdPasswordIncorrect(t *testing.T) { + cDir := test_helpers.InitFS(t) // Create filesystem with password "test" + // Change password + cmd := exec.Command(test_helpers.GocryptfsBinary, "-passwd", cDir) + childStdin, err := cmd.StdinPipe() + if err != nil { + t.Fatal(err) + } + err = cmd.Start() + if err != nil { + t.Fatal(err) + } + _, err = childStdin.Write([]byte("WRONGPASSWORD\nNewPassword")) + if err != nil { + t.Fatal(err) + } + err = childStdin.Close() + if err != nil { + t.Fatal(err) + } + err = cmd.Wait() + exitCode := err.(*exec.ExitError).Sys().(syscall.WaitStatus).ExitStatus() + if exitCode != exitcodes.PasswordIncorrect { + t.Errorf("want=%d, got=%d", exitcodes.PasswordIncorrect, exitCode) + } +}