From 79ca6ab14537a6ffec7b452105210d6ac8a872b0 Mon Sep 17 00:00:00 2001 From: Benjamin Jee Date: Thu, 9 Nov 2023 10:23:33 -0800 Subject: [PATCH 1/3] Correct header name validation --- .../static/nginx/config/validation/http_njs_match.go | 4 ++++ .../nginx/config/validation/http_njs_match_test.go | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/internal/mode/static/nginx/config/validation/http_njs_match.go b/internal/mode/static/nginx/config/validation/http_njs_match.go index d207766c20..e261ba644b 100644 --- a/internal/mode/static/nginx/config/validation/http_njs_match.go +++ b/internal/mode/static/nginx/config/validation/http_njs_match.go @@ -46,6 +46,10 @@ func (HTTPNJSMatchValidator) ValidatePathInMatch(path string) error { } func (HTTPNJSMatchValidator) ValidateHeaderNameInMatch(name string) error { + if err := k8svalidation.IsHTTPHeaderName(name); err != nil { + return fmt.Errorf(err[0]) + } + return validateNJSHeaderPart(name) } diff --git a/internal/mode/static/nginx/config/validation/http_njs_match_test.go b/internal/mode/static/nginx/config/validation/http_njs_match_test.go index 06de3709f2..d515fcc319 100644 --- a/internal/mode/static/nginx/config/validation/http_njs_match_test.go +++ b/internal/mode/static/nginx/config/validation/http_njs_match_test.go @@ -34,12 +34,18 @@ func TestValidateHeaderNameInMatch(t *testing.T) { t, validator.ValidateHeaderNameInMatch, "header", + "version", + "version-2", ) testInvalidValuesForSimpleValidator( t, validator.ValidateHeaderNameInMatch, ":", "", + "version%!", + "version_2", + "hello$world", + " ", ) } @@ -50,12 +56,15 @@ func TestValidateHeaderValueInMatch(t *testing.T) { t, validator.ValidateHeaderValueInMatch, "value", + "version%!", ) testInvalidValuesForSimpleValidator( t, validator.ValidateHeaderValueInMatch, ":", "", + "hello$world", + " ", ) } From ecf9e42efa71c4ec6aca06eb899f09bb6479d2df Mon Sep 17 00:00:00 2001 From: Benjamin Jee Date: Thu, 9 Nov 2023 13:15:49 -0800 Subject: [PATCH 2/3] Change to errors.New --- internal/mode/static/nginx/config/validation/http_njs_match.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/mode/static/nginx/config/validation/http_njs_match.go b/internal/mode/static/nginx/config/validation/http_njs_match.go index e261ba644b..dc224c38e7 100644 --- a/internal/mode/static/nginx/config/validation/http_njs_match.go +++ b/internal/mode/static/nginx/config/validation/http_njs_match.go @@ -47,7 +47,7 @@ func (HTTPNJSMatchValidator) ValidatePathInMatch(path string) error { func (HTTPNJSMatchValidator) ValidateHeaderNameInMatch(name string) error { if err := k8svalidation.IsHTTPHeaderName(name); err != nil { - return fmt.Errorf(err[0]) + return errors.New(err[0]) } return validateNJSHeaderPart(name) From 20de9a0a705204c40e0af06416c1a8614d6b093c Mon Sep 17 00:00:00 2001 From: Benjamin Jee Date: Fri, 10 Nov 2023 09:52:50 -0800 Subject: [PATCH 3/3] Add another test case --- .../mode/static/nginx/config/validation/http_njs_match_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/mode/static/nginx/config/validation/http_njs_match_test.go b/internal/mode/static/nginx/config/validation/http_njs_match_test.go index d515fcc319..0fd99ae5b9 100644 --- a/internal/mode/static/nginx/config/validation/http_njs_match_test.go +++ b/internal/mode/static/nginx/config/validation/http_njs_match_test.go @@ -57,6 +57,7 @@ func TestValidateHeaderValueInMatch(t *testing.T) { validator.ValidateHeaderValueInMatch, "value", "version%!", + "version-2", ) testInvalidValuesForSimpleValidator( t,