From 2d88d2488120bc1631e1cc63e5dc67f6e121a1d2 Mon Sep 17 00:00:00 2001 From: jtagcat Date: Tue, 16 Jun 2020 13:34:03 +0300 Subject: [PATCH] config: reject remote names starting with a dash. (#4261) --- fs/fspath/path.go | 5 +++++ fs/fspath/path_test.go | 3 +++ 2 files changed, 8 insertions(+) diff --git a/fs/fspath/path.go b/fs/fspath/path.go index fd6034181..adf19a6ce 100644 --- a/fs/fspath/path.go +++ b/fs/fspath/path.go @@ -19,6 +19,7 @@ const ( var ( errInvalidCharacters = errors.New("config name contains invalid characters - may only contain 0-9, A-Z ,a-z ,_ , - and space ") errCantBeEmpty = errors.New("can't use empty string as a path") + errCantStartWithDash = errors.New("config name starts with -") // urlMatcher is a pattern to match an rclone URL // note that this matches invalid remoteNames @@ -36,6 +37,10 @@ func CheckConfigName(configName string) error { if !configNameMatcher.MatchString(configName) { return errInvalidCharacters } + // Reject configName, if it starts with -, complicates usage. (#4261) + if strings.HasPrefix(configName, "-") { + return errCantStartWithDash + } return nil } diff --git a/fs/fspath/path_test.go b/fs/fspath/path_test.go index 5e8cba2e5..135708ec8 100644 --- a/fs/fspath/path_test.go +++ b/fs/fspath/path_test.go @@ -23,6 +23,9 @@ func TestCheckConfigName(t *testing.T) { {"rem\\ote", errInvalidCharacters}, {"[remote", errInvalidCharacters}, {"*", errInvalidCharacters}, + {"-remote", errCantStartWithDash}, + {"r-emote-", nil}, + {"_rem_ote_", nil}, } { got := CheckConfigName(test.in) assert.Equal(t, test.want, got, test.in)