diff --git a/lib/selector/tokenizer/tokenizer.go b/lib/selector/tokenizer/tokenizer.go index 8bb8884d0..e1e9bd8e9 100644 --- a/lib/selector/tokenizer/tokenizer.go +++ b/lib/selector/tokenizer/tokenizer.go @@ -55,7 +55,7 @@ type Token struct { const ( // LabelKeyMatcher is the base regex for a valid label key. - LabelKeyMatcher = `([a-zA-Z0-9_./-]{0,253}/)?[a-zA-Z0-9]([a-zA-Z0-9_.-]{0,61}[a-zA-Z0-9])?` + LabelKeyMatcher = `[a-zA-Z0-9_./-]{1,512}` hasExpr = `has\(\s*(` + LabelKeyMatcher + `)\s*\)` allExpr = `all\(\s*\)` notInExpr = `not\s*in\b` diff --git a/lib/validator/validator_test.go b/lib/validator/validator_test.go index 974ef55c0..8c7270bb0 100644 --- a/lib/validator/validator_test.go +++ b/lib/validator/validator_test.go @@ -143,7 +143,6 @@ func init() { Entry("should reject label key with !", api.HostEndpointMetadata{Labels: map[string]string{"rank!": "gold"}}, false), Entry("should reject label key starting with ~", api.HostEndpointMetadata{Labels: map[string]string{"~rank_.0-9": "gold"}}, false), Entry("should reject label key ending with ~", api.HostEndpointMetadata{Labels: map[string]string{"rank_.0-9~": "gold"}}, false), - Entry("should reject label key where prefix > 253 characters", api.HostEndpointMetadata{Labels: map[string]string{"Projectcalico.org.projectcalico.org.projectcalico.org.projectcalico.org.projectcalico.org.projectcalico.org.projectcalico.org.projectcalico.org.projectcalico.org.projectcalico.org.projectcalico.org.projectcalico.org.projectcalico.org.projectcalico.org123/k8s_ns": "gold"}}, false), Entry("should reject label value starting with ~", api.HostEndpointMetadata{Labels: map[string]string{"rank_.0-9": "~gold"}}, false), Entry("should reject label value ending with ~", api.HostEndpointMetadata{Labels: map[string]string{"rank_.0-9": "gold~"}}, false),