From 36d773223481dd42d31499b3ea73e6999ff9f58e Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Wed, 18 Sep 2019 22:27:25 -0700 Subject: Disable strict XML parsing This change should improve parsing of broken XML feeds. See https://golang.org/pkg/encoding/xml/#Decoder --- reader/atom/parser.go | 1 + reader/atom/parser_test.go | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) (limited to 'reader/atom') diff --git a/reader/atom/parser.go b/reader/atom/parser.go index 85be4b5..4749c1a 100644 --- a/reader/atom/parser.go +++ b/reader/atom/parser.go @@ -18,6 +18,7 @@ func Parse(data io.Reader) (*model.Feed, *errors.LocalizedError) { atomFeed := new(atomFeed) decoder := xml.NewDecoder(data) decoder.Entity = xml.HTMLEntity + decoder.Strict = false decoder.CharsetReader = encoding.CharsetReader err := decoder.Decode(atomFeed) diff --git a/reader/atom/parser_test.go b/reader/atom/parser_test.go index dc42575..746c767 100644 --- a/reader/atom/parser_test.go +++ b/reader/atom/parser_test.go @@ -577,3 +577,22 @@ func TestParseWithHTMLEntity(t *testing.T) { t.Errorf(`Incorrect title, got: %q`, feed.Title) } } + +func TestParseWithInvalidCharacterEntity(t *testing.T) { + data := ` + + + Example Feed + + + ` + + feed, err := Parse(bytes.NewBufferString(data)) + if err != nil { + t.Fatal(err) + } + + if feed.SiteURL != "http://example.org/a&b" { + t.Errorf(`Incorrect URL, got: %q`, feed.SiteURL) + } +} -- cgit v1.2.3