From 7f2ca5db0fba7cf56a3322c25cf377e3c156c432 Mon Sep 17 00:00:00 2001 From: Aaron Lindsay Date: Mon, 17 Apr 2017 20:37:40 -0400 Subject: [PATCH] Check Valid() when parsing responses --- response.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/response.go b/response.go index 429589e..5c909ca 100644 --- a/response.go +++ b/response.go @@ -219,7 +219,7 @@ var responseTypes = map[string]map[string]reflect.Type{ ImageRs.String(): {}, } -func decodeMessageSet(d *xml.Decoder, start xml.StartElement, msgs *[]Message) error { +func decodeMessageSet(d *xml.Decoder, start xml.StartElement, msgs *[]Message, version ofxVersion) error { setTypes, ok := responseTypes[start.Name.Local] if !ok { return errors.New("Invalid message set: " + start.Name.Local) @@ -245,6 +245,9 @@ func decodeMessageSet(d *xml.Decoder, start xml.StartElement, msgs *[]Message) e if err := d.DecodeElement(responseMessage, &startElement); err != nil { return err } + if ok, err := responseMessage.Valid(version); !ok { + return err + } *msgs = append(*msgs, responseMessage) } else { return errors.New("Didn't find an opening element") @@ -348,7 +351,7 @@ func ParseResponse(reader io.Reader) (*Response, error) { if !ok { return nil, errors.New("Invalid message set: " + start.Name.Local) } - if err := decodeMessageSet(decoder, start, slice); err != nil { + if err := decodeMessageSet(decoder, start, slice, or.Version); err != nil { return nil, err } } else {