Browse Source

fix(jsonfeed): avoid panic when parsing null JSON feed

Frédéric Guillot 2 months ago
parent
commit
5d8540b324
2 changed files with 13 additions and 1 deletions
  1. 1 1
      internal/reader/json/parser.go
  2. 12 0
      internal/reader/json/parser_test.go

+ 1 - 1
internal/reader/json/parser.go

@@ -14,7 +14,7 @@ import (
 // Parse returns a normalized feed struct from a JSON feed.
 func Parse(baseURL string, data io.Reader) (*model.Feed, error) {
 	jsonFeed := new(JSONFeed)
-	if err := json.NewDecoder(data).Decode(&jsonFeed); err != nil {
+	if err := json.NewDecoder(data).Decode(jsonFeed); err != nil {
 		return nil, fmt.Errorf("json: unable to parse feed: %w", err)
 	}
 

+ 12 - 0
internal/reader/json/parser_test.go

@@ -1012,3 +1012,15 @@ func TestParseInvalidJSON(t *testing.T) {
 		t.Error("Parse should returns an error")
 	}
 }
+
+func TestParseNullJSONFeed(t *testing.T) {
+	data := `null`
+	feed, err := Parse("https://example.org/feed.json", bytes.NewBufferString(data))
+	if err != nil {
+		t.Fatalf("Unexpected error when parsing null feed: %v", err)
+	}
+
+	if feed == nil {
+		t.Fatalf("Feed should not be nil")
+	}
+}