From 129dc1baaa639f00e06a9d16ac96e0c4b300bcce Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Sun, 29 Aug 2021 09:34:34 +0200 Subject: [PATCH] valid: fix nil values in OptionalString --- valid/valid.go | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/valid/valid.go b/valid/valid.go index 90e35f9d28c10c769a0e0d0fa6accd512746f368..3de93e1353bd69f2ee22d410d1dc1f6613989402 100644 --- a/valid/valid.go +++ b/valid/valid.go @@ -45,6 +45,9 @@ func (valid *Validation) Optional(name string, fn func(i interface{})) { panic("Attempted to validate fields without input") } if o, ok := valid.input[name]; ok { + if o == nil { + return + } fn(o) } } @@ -58,13 +61,22 @@ func (valid *Validation) OptionalString(name string, fn func(s string)) { panic("Attempted to validate fields without input") } if o, ok := valid.input[name]; ok { - s, ok := o.(string) - valid. - Expect(ok, "Expected %s to be a string", name). - WithField(name) - if ok { - fn(s) + if o == nil { + return + } + var val string + switch s := o.(type) { + case string: + val = s + case *string: + val = *s + default: + valid. + Error("Expected %s to be a string", name). + WithField(name) + return } + fn(val) } }