fspath: improved detection of illegal remote names starting with dash (related to #4261)

This commit is contained in:
albertony 2022-12-12 20:03:39 +01:00
parent 8e6a469f98
commit 8b9f3bbe29
2 changed files with 4 additions and 9 deletions

View File

@ -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
}

View File

@ -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},