mirror of
https://github.com/rclone/rclone
synced 2024-12-24 15:43:45 +01:00
fspath: improved detection of illegal remote names starting with dash (related to #4261)
This commit is contained in:
parent
8e6a469f98
commit
8b9f3bbe29
@ -13,13 +13,12 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
configNameRe = `[\w\p{L}\p{N}.-]+(?: +[\w\p{L}\p{N}.-]+)*`
|
||||
configNameRe = `[\w\p{L}\p{N}.]+(?:[ -]+[\w\p{L}\p{N}.-]+)*` // don't allow it to start with `-` as it complicates usage (#4261)
|
||||
)
|
||||
|
||||
var (
|
||||
errInvalidCharacters = errors.New("config name contains invalid characters - may only contain numbers, letters, `_`, `-`, `.` and space, while not start or end with space")
|
||||
errInvalidCharacters = errors.New("config name contains invalid characters - may only contain numbers, letters, `_`, `-`, `.` and space, while not start with `-` or space, and not end with space")
|
||||
errCantBeEmpty = errors.New("can't use empty string as a path")
|
||||
errCantStartWithDash = errors.New("config name starts with `-`")
|
||||
errBadConfigParam = errors.New("config parameters may only contain `0-9`, `A-Z`, `a-z` and `_`")
|
||||
errEmptyConfigParam = errors.New("config parameters can't be empty")
|
||||
errConfigNameEmpty = errors.New("config name can't be empty")
|
||||
@ -42,10 +41,6 @@ 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
|
||||
}
|
||||
|
||||
|
@ -32,7 +32,7 @@ func TestCheckConfigName(t *testing.T) {
|
||||
{"rem\\ote", errInvalidCharacters},
|
||||
{"[remote", errInvalidCharacters},
|
||||
{"*", errInvalidCharacters},
|
||||
{"-remote", errCantStartWithDash},
|
||||
{"-remote", errInvalidCharacters},
|
||||
{"r-emote-", nil},
|
||||
{"_rem_ote_", nil},
|
||||
{".", nil},
|
||||
@ -62,7 +62,7 @@ func TestCheckRemoteName(t *testing.T) {
|
||||
{".:", nil},
|
||||
{"..:", nil},
|
||||
{".r.e.m.o.t.e.:", nil},
|
||||
{"-r-emote-:", nil},
|
||||
{"-r-emote-:", errInvalidCharacters},
|
||||
{"rem ote:", nil},
|
||||
{"blåbær:", nil},
|
||||
{"chữ Quốc ngữ:", nil},
|
||||
|
Loading…
Reference in New Issue
Block a user