From 76386ad7adaf540d6aff8fec4e7956d7ab66b094 Mon Sep 17 00:00:00 2001 From: Drew Weymouth Date: Wed, 26 Apr 2023 08:38:56 -0700 Subject: [PATCH] fix potential crash in searching albums --- backend/albumiterator.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/backend/albumiterator.go b/backend/albumiterator.go index b2ef1a1..d1d7cfa 100644 --- a/backend/albumiterator.go +++ b/backend/albumiterator.go @@ -185,20 +185,25 @@ func (s *searchIter) Next() *subsonic.AlbumID3 { // add results from artists search for _, artist := range results.Artist { artist, err := s.s.GetArtist(artist.ID) - if err != nil { + if err != nil || artist == nil { log.Printf("error fetching artist: %s", err.Error()) + } else { + s.addNewAlbums(artist.Album) } - s.addNewAlbums(artist.Album) } s.artistOffset += len(results.Artist) // add results from songs search for _, song := range results.Song { - album, err := s.s.GetAlbum(song.Parent) - if err != nil { - log.Printf("error fetching album: %s", err.Error()) + if song.AlbumID == "" { + continue + } + album, err := s.s.GetAlbum(song.AlbumID) + if err != nil || album == nil { + log.Printf("error fetching album: %s", err.Error()) + } else { + s.addNewAlbums([]*subsonic.AlbumID3{album}) } - s.addNewAlbums([]*subsonic.AlbumID3{album}) } s.songOffset += len(results.Song) }