From 52220826356824f14ee601d1b8dfeda39aeb76e4 Mon Sep 17 00:00:00 2001 From: Martchus Date: Tue, 8 Aug 2023 00:53:57 +0200 Subject: [PATCH] Fix crashes when invoking DB query functions with invalid index --- dbquery/lyricswikia.cpp | 6 +++--- dbquery/musicbrainz.cpp | 6 +++--- dbquery/tekstowo.cpp | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dbquery/lyricswikia.cpp b/dbquery/lyricswikia.cpp index 292d981..41f01cf 100644 --- a/dbquery/lyricswikia.cpp +++ b/dbquery/lyricswikia.cpp @@ -43,7 +43,7 @@ LyricsWikiaResultsModel::LyricsWikiaResultsModel(SongDescription &&initialSongDe bool LyricsWikiaResultsModel::fetchCover(const QModelIndex &index) { - if (index.parent().isValid() || index.row() >= m_results.size()) { + if (index.parent().isValid() || !index.isValid() || index.row() >= m_results.size()) { return true; } @@ -84,7 +84,7 @@ bool LyricsWikiaResultsModel::fetchCover(const QModelIndex &index) bool LyricsWikiaResultsModel::fetchLyrics(const QModelIndex &index) { - if (index.parent().isValid() || index.row() >= m_results.size()) { + if (index.parent().isValid() || !index.isValid() || index.row() >= m_results.size()) { return true; } @@ -391,7 +391,7 @@ void LyricsWikiaResultsModel::parseAlbumDetailsAndFetchCover(int row, const QByt QUrl LyricsWikiaResultsModel::webUrl(const QModelIndex &index) { - if (index.parent().isValid() || index.row() >= results().size()) { + if (index.parent().isValid() || !index.isValid() || index.row() >= m_results.size()) { return QUrl(); } diff --git a/dbquery/musicbrainz.cpp b/dbquery/musicbrainz.cpp index bba3f02..e2e6949 100644 --- a/dbquery/musicbrainz.cpp +++ b/dbquery/musicbrainz.cpp @@ -40,7 +40,7 @@ MusicBrainzResultsModel::MusicBrainzResultsModel(SongDescription &&initialSongDe bool MusicBrainzResultsModel::fetchCover(const QModelIndex &index) { - if (index.parent().isValid() || index.row() >= m_results.size()) { + if (index.parent().isValid() || !index.isValid() || index.row() >= m_results.size()) { return true; } @@ -73,10 +73,10 @@ bool MusicBrainzResultsModel::fetchCover(const QModelIndex &index) QUrl MusicBrainzResultsModel::webUrl(const QModelIndex &index) { - if (index.parent().isValid() || index.row() >= results().size()) { + if (index.parent().isValid() || !index.isValid() || index.row() >= m_results.size()) { return QUrl(); } - return QUrl(QStringLiteral("https://musicbrainz.org/recording/") + results().at(index.row()).songId); + return QUrl(QStringLiteral("https://musicbrainz.org/recording/") + m_results.at(index.row()).songId); } void MusicBrainzResultsModel::parseInitialResults(const QByteArray &data) diff --git a/dbquery/tekstowo.cpp b/dbquery/tekstowo.cpp index d9aa753..c12833c 100644 --- a/dbquery/tekstowo.cpp +++ b/dbquery/tekstowo.cpp @@ -32,7 +32,7 @@ TekstowoResultsModel::TekstowoResultsModel(SongDescription &&initialSongDescript bool TekstowoResultsModel::fetchLyrics(const QModelIndex &index) { - if ((index.parent().isValid() || index.row() >= m_results.size()) && !m_results[index.row()].lyrics.isEmpty()) { + if ((index.parent().isValid() || !index.isValid() || index.row() >= m_results.size()) || m_results[index.row()].lyrics.isEmpty()) { return true; } const auto url = webUrl(index); @@ -145,7 +145,7 @@ void TekstowoResultsModel::parseLyricsResults(int row, const QByteArray &data) QUrl TekstowoResultsModel::webUrl(const QModelIndex &index) { - if (index.parent().isValid() || index.row() >= results().size()) { + if (index.parent().isValid() || !index.isValid() || index.row() >= m_results.size()) { return QUrl(); } auto url = tekstowoUrl();