diff options
| author | Jakob Unterwurzacher | 2023-05-03 21:14:53 +0200 | 
|---|---|---|
| committer | Jakob Unterwurzacher | 2023-05-03 21:14:53 +0200 | 
| commit | aa1d8a0f90a1046b89dfdd9e58fb1407c76ff27e (patch) | |
| tree | 00277726372da29d5988486fcccbfcaade4f8ef8 | |
| parent | 6c14d25d442a819bf37e228d936e6a2a05de747d (diff) | |
cli: don't split multiple-strings flags on comma
Looks like I used StringSliceVar (which splits on comma)
where I should have always used StringArrayVar (which does not).
Bug report contains this example of misbehavoir:
	#gocryptfs -extpass 'echo abc,123' -init testdir
	Reading password from extpass program "echo abc", arguments: ["123"]
	extpass cmd start failed: exec: "echo abc": executable file not found in $PATH
Fixes https://github.com/rfjakob/gocryptfs/issues/730
| -rw-r--r-- | cli_args.go | 16 | ||||
| -rw-r--r-- | cli_args_test.go | 6 | 
2 files changed, 11 insertions, 11 deletions
diff --git a/cli_args.go b/cli_args.go index 91bd56e..48f1cdd 100644 --- a/cli_args.go +++ b/cli_args.go @@ -210,16 +210,16 @@ func parseCliOpts(osArgs []string) (args argContainer) {  	flagSet.StringVar(&args.fido2, "fido2", "", "Protect the masterkey using a FIDO2 token instead of a password")  	// Exclusion options -	flagSet.StringSliceVar(&args.exclude, "e", nil, "Alias for -exclude") -	flagSet.StringSliceVar(&args.exclude, "exclude", nil, "Exclude relative path from reverse view") -	flagSet.StringSliceVar(&args.excludeWildcard, "ew", nil, "Alias for -exclude-wildcard") -	flagSet.StringSliceVar(&args.excludeWildcard, "exclude-wildcard", nil, "Exclude path from reverse view, supporting wildcards") -	flagSet.StringSliceVar(&args.excludeFrom, "exclude-from", nil, "File from which to read exclusion patterns (with -exclude-wildcard syntax)") +	flagSet.StringArrayVar(&args.exclude, "e", nil, "Alias for -exclude") +	flagSet.StringArrayVar(&args.exclude, "exclude", nil, "Exclude relative path from reverse view") +	flagSet.StringArrayVar(&args.excludeWildcard, "ew", nil, "Alias for -exclude-wildcard") +	flagSet.StringArrayVar(&args.excludeWildcard, "exclude-wildcard", nil, "Exclude path from reverse view, supporting wildcards") +	flagSet.StringArrayVar(&args.excludeFrom, "exclude-from", nil, "File from which to read exclusion patterns (with -exclude-wildcard syntax)")  	// multipleStrings options ([]string) -	flagSet.StringSliceVar(&args.extpass, "extpass", nil, "Use external program for the password prompt") -	flagSet.StringSliceVar(&args.badname, "badname", nil, "Glob pattern invalid file names that should be shown") -	flagSet.StringSliceVar(&args.passfile, "passfile", nil, "Read password from file") +	flagSet.StringArrayVar(&args.extpass, "extpass", nil, "Use external program for the password prompt") +	flagSet.StringArrayVar(&args.badname, "badname", nil, "Glob pattern invalid file names that should be shown") +	flagSet.StringArrayVar(&args.passfile, "passfile", nil, "Read password from file")  	flagSet.Uint8Var(&args.longnamemax, "longnamemax", 255, "Hash encrypted names that are longer than this") diff --git a/cli_args_test.go b/cli_args_test.go index 3220196..4fb01ac 100644 --- a/cli_args_test.go +++ b/cli_args_test.go @@ -157,13 +157,13 @@ func TestParseCliOpts(t *testing.T) {  	}...)  	o = defaultArgs -	o.exclude = []string{"foo", "bar"} +	o.exclude = []string{"foo", "bar", "baz,boe"}  	testcases = append(testcases, []testcaseContainer{  		{ -			i: []string{"gocryptfs", "-e", "foo", "-e", "bar"}, +			i: []string{"gocryptfs", "-e", "foo", "-e", "bar", "-e", "baz,boe"},  			o: o,  		}, { -			i: []string{"gocryptfs", "--exclude", "foo", "--exclude", "bar"}, +			i: []string{"gocryptfs", "--exclude", "foo", "--exclude", "bar", "--exclude", "baz,boe"},  			o: o,  		}, /* TODO BROKEN {  			i: []string{"gocryptfs", "--exclude", "foo", "-e", "bar"},  | 
