From ac591d8283bcd979478132099299862b09ca0220 Mon Sep 17 00:00:00 2001 From: Johan Brandhorst-Satzkorn Date: Wed, 24 Aug 2022 15:01:54 -0700 Subject: [PATCH] fix(managed_groups): Fix validation function panic (#2390) The logic would panic if no attributes were specified. Ensure that attributes are non-nil before checking any sub fields. --- .../handlers/managed_groups/managed_group_service.go | 11 ++++++----- .../handlers/managed_groups/validate_test.go | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/internal/daemon/controller/handlers/managed_groups/managed_group_service.go b/internal/daemon/controller/handlers/managed_groups/managed_group_service.go index 5b5307abf..c6621a4d2 100644 --- a/internal/daemon/controller/handlers/managed_groups/managed_group_service.go +++ b/internal/daemon/controller/handlers/managed_groups/managed_group_service.go @@ -601,12 +601,13 @@ func validateCreateRequest(req *pbs.CreateManagedGroupRequest) error { attrs := req.GetItem().GetOidcManagedGroupAttributes() if attrs == nil { badFields[globals.AttributesField] = "Attribute fields is required." - } - if attrs.Filter == "" { - badFields[attrFilterField] = "This field is required." } else { - if _, err := bexpr.CreateEvaluator(attrs.Filter); err != nil { - badFields[attrFilterField] = fmt.Sprintf("Error evaluating submitted filter expression: %v.", err) + if attrs.Filter == "" { + badFields[attrFilterField] = "This field is required." + } else { + if _, err := bexpr.CreateEvaluator(attrs.Filter); err != nil { + badFields[attrFilterField] = fmt.Sprintf("Error evaluating submitted filter expression: %v.", err) + } } } default: diff --git a/internal/daemon/controller/handlers/managed_groups/validate_test.go b/internal/daemon/controller/handlers/managed_groups/validate_test.go index 5c53ffeb2..958f3c64b 100644 --- a/internal/daemon/controller/handlers/managed_groups/validate_test.go +++ b/internal/daemon/controller/handlers/managed_groups/validate_test.go @@ -49,7 +49,7 @@ func TestValidateCreateRequest(t *testing.T) { AuthMethodId: oidc.AuthMethodPrefix + "_1234567890", Attrs: nil, }, - errContains: fieldError(attrFilterField, "This field is required."), + errContains: fieldError(globals.AttributesField, "Attribute fields is required."), }, { name: "bad oidc attributes",