1
0
Fork 0
mirror of https://github.com/miniflux/v2.git synced 2025-06-27 16:36:00 +00:00

Regression: ensure all HTML documents are encoded in UTF-8

Fixes #2196
This commit is contained in:
Frédéric Guillot 2023-12-01 16:27:18 -08:00
parent f8b40085cd
commit d0f99cee1a
12 changed files with 68 additions and 36 deletions

View file

@ -13,8 +13,8 @@ import (
"miniflux.app/v2/internal/reader/encoding"
)
// NewDecoder returns a XML decoder that filters illegal characters.
func NewDecoder(data io.Reader) *xml.Decoder {
// NewXMLDecoder returns a XML decoder that filters illegal characters.
func NewXMLDecoder(data io.Reader) *xml.Decoder {
var decoder *xml.Decoder
buffer, _ := io.ReadAll(data)
enc := procInst("encoding", string(buffer))
@ -36,7 +36,7 @@ func NewDecoder(data io.Reader) *xml.Decoder {
}
rawData, err := io.ReadAll(utf8Reader)
if err != nil {
return nil, fmt.Errorf("Unable to read data: %q", err)
return nil, fmt.Errorf("encoding: unable to read data: %w", err)
}
filteredBytes := bytes.Map(filterValidXMLChar, rawData)
return bytes.NewReader(filteredBytes), nil

View file

@ -10,7 +10,7 @@ import (
"testing"
)
func TestUTF8WithIllegalCharacters(t *testing.T) {
func TestXMLDocumentWithIllegalUnicodeCharacters(t *testing.T) {
type myxml struct {
XMLName xml.Name `xml:"rss"`
Version string `xml:"version,attr"`
@ -23,7 +23,7 @@ func TestUTF8WithIllegalCharacters(t *testing.T) {
var x myxml
decoder := NewDecoder(reader)
decoder := NewXMLDecoder(reader)
err := decoder.Decode(&x)
if err != nil {
t.Error(err)
@ -34,7 +34,7 @@ func TestUTF8WithIllegalCharacters(t *testing.T) {
}
}
func TestWindows251WithIllegalCharacters(t *testing.T) {
func TestXMLDocumentWindows251EncodedWithIllegalCharacters(t *testing.T) {
type myxml struct {
XMLName xml.Name `xml:"rss"`
Version string `xml:"version,attr"`
@ -47,7 +47,7 @@ func TestWindows251WithIllegalCharacters(t *testing.T) {
var x myxml
decoder := NewDecoder(reader)
decoder := NewXMLDecoder(reader)
err := decoder.Decode(&x)
if err != nil {
t.Error(err)
@ -58,7 +58,7 @@ func TestWindows251WithIllegalCharacters(t *testing.T) {
}
}
func TestIllegalEncodingField(t *testing.T) {
func TestXMLDocumentWithIncorrectEncodingField(t *testing.T) {
type myxml struct {
XMLName xml.Name `xml:"rss"`
Version string `xml:"version,attr"`
@ -71,7 +71,7 @@ func TestIllegalEncodingField(t *testing.T) {
var x myxml
decoder := NewDecoder(reader)
decoder := NewXMLDecoder(reader)
err := decoder.Decode(&x)
if err != nil {
t.Error(err)