mirror of
https://github.com/miniflux/v2.git
synced 2025-09-15 18:57:04 +00:00
Fix invalid parsing of data URL
Fetching icons crashes with "slice bounds out of range" error if no encoding is specified.
This commit is contained in:
parent
40f958c5ef
commit
f6825c1c60
2 changed files with 77 additions and 17 deletions
|
@ -25,6 +25,34 @@ func TestParseImageDataURL(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestParseImageDataURLWithNoEncoding(t *testing.T) {
|
||||
iconURL := `data:image/webp,%3Ch1%3EHello%2C%20World%21%3C%2Fh1%3E`
|
||||
icon, err := parseImageDataURL(iconURL)
|
||||
if err != nil {
|
||||
t.Fatalf(`We should be able to parse valid data URL: %v`, err)
|
||||
}
|
||||
|
||||
if icon.MimeType != "image/webp" {
|
||||
t.Fatal(`Invalid mime type parsed`)
|
||||
}
|
||||
|
||||
if string(icon.Content) == "Hello, World!" {
|
||||
t.Fatal(`Value should be URL-decoded`)
|
||||
}
|
||||
|
||||
if icon.Hash == "" {
|
||||
t.Fatal(`Image hash should be computed`)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseImageDataURLWithNoMediaTypeAndNoEncoding(t *testing.T) {
|
||||
iconURL := `data:,Hello%2C%20World%21`
|
||||
_, err := parseImageDataURL(iconURL)
|
||||
if err == nil {
|
||||
t.Fatal(`We should detect invalid mime type`)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseInvalidImageDataURLWithBadMimeType(t *testing.T) {
|
||||
_, err := parseImageDataURL("data:text/plain;base64,blob")
|
||||
if err == nil {
|
||||
|
@ -39,7 +67,7 @@ func TestParseInvalidImageDataURLWithUnsupportedEncoding(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestParseInvalidImageDataURLWithInvalidEncodedData(t *testing.T) {
|
||||
func TestParseInvalidImageDataURLWithNoData(t *testing.T) {
|
||||
_, err := parseImageDataURL("data:image/png;base64,")
|
||||
if err == nil {
|
||||
t.Fatal(`We should detect invalid encoded data`)
|
||||
|
@ -53,6 +81,13 @@ func TestParseInvalidImageDataURL(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestParseInvalidImageDataURLWithWrongPrefix(t *testing.T) {
|
||||
_, err := parseImageDataURL("data,test")
|
||||
if err == nil {
|
||||
t.Fatal(`We should detect malformed image data URL`)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseDocumentWithWhitespaceIconURL(t *testing.T) {
|
||||
html := `<link rel="shortcut icon" href="
|
||||
/static/img/favicon.ico
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue