From 8e6721a090e6a1043a84506fb6c21aa54d8ee87e Mon Sep 17 00:00:00 2001 From: Harry Marr Date: Sun, 28 Mar 2021 14:21:45 -0400 Subject: [PATCH] Don't allow [] characters in patterns --- parse.go | 2 +- parse_test.go | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/parse.go b/parse.go index 4f26620..6a74a4f 100644 --- a/parse.go +++ b/parse.go @@ -171,7 +171,7 @@ func isAlphanumeric(ch rune) bool { // isPatternChar matches characters that are allowed in patterns func isPatternChar(ch rune) bool { switch ch { - case '*', '?', '.', '/', '@', '_', '+', '-', '[', ']', '\\': + case '*', '?', '.', '/', '@', '_', '+', '-', '\\': return true } return isAlphanumeric(ch) diff --git a/parse_test.go b/parse_test.go index 4ec807c..0e33ad2 100644 --- a/parse_test.go +++ b/parse_test.go @@ -52,9 +52,9 @@ func TestParseRule(t *testing.T) { }, { name: "complex patterns", - rule: "[d]?r/* @user", + rule: "d?r/* @user", expected: Rule{ - pattern: mustBuildPattern(t, "[d]?r/*"), + pattern: mustBuildPattern(t, "d?r/*"), Owners: []Owner{{Value: "user", Type: "username"}}, }, }, @@ -92,6 +92,11 @@ func TestParseRule(t *testing.T) { rule: "file.{txt @user", err: "unexpected character '{' at position 6", }, + { + name: "patterns with brackets", + rule: "file.[cC] @user", + err: "unexpected character '[' at position 6", + }, { name: "malformed owners", rule: "file.txt missing-at-sign",