From 6215ecb82a80f42608d8a9012cec4894e421817c Mon Sep 17 00:00:00 2001 From: Jason Streifling Date: Tue, 15 Oct 2024 16:20:04 +0200 Subject: [PATCH] Properly check url and email address --- person.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/person.go b/person.go index 99d9dd3..1fe0160 100644 --- a/person.go +++ b/person.go @@ -4,6 +4,8 @@ import ( "encoding/xml" "errors" "fmt" + "net/mail" + "net/url" ) type Person struct { @@ -27,6 +29,18 @@ func (p *Person) Check() error { return errors.New("name element of person element empty") } + if p.URI != "" { + if _, err := url.ParseRequestURI(string(p.URI)); err != nil { + return fmt.Errorf("email element of person %v not correctly formatted", p.Name) + } + } + + if p.Email != "" { + if _, err := mail.ParseAddress(string(p.Email)); err != nil { + return fmt.Errorf("email element of person %v not correctly formatted", p.Name) + } + } + if p.Extensions != nil { for i, e := range p.Extensions { if err := e.Check(); err != nil {