New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cannot parse torrent info: bencoded item count limit exceeded #20403
Comments
Can't reproduce in 4.6.3. |
Backporting? |
No. 4.5.x ended at 4.5.5. |
Closing as obsolete. Current stable is 4.6.3 |
Here a few issues related to "big torrents" crash:
Since all Debian users (current release 12 Bookworm) is stuck to qbittorrent 4.5 (new release 4.6 depends on new libraries and cannot be easily migrated to current debian release), can I have commit id, I will port the patch my self. |
I don't know what fixed it. It could very well be a fix in libtorrent (you didn't mention what version you use). |
I forgot to mention, debian Bookwork just been released (10 Jun 2023). It is unlikely qbittorrent will be updated (with debian 13 Trixie release) for end users sooner than two-three years after release.
|
diff --git a/src/base/bittorrent/bencoderesumedatastorage.cpp b/src/base/bittorrent/bencoderesumedatastorage.cpp
index b6f02ce..3324da3 100644
--- a/src/base/bittorrent/bencoderesumedatastorage.cpp
+++ b/src/base/bittorrent/bencoderesumedatastorage.cpp
@@ -196,7 +196,7 @@ void BitTorrent::BencodeResumeDataStorage::loadQueue(const Path &queueFilename)
BitTorrent::LoadResumeDataResult BitTorrent::BencodeResumeDataStorage::loadTorrentResumeData(const QByteArray &data, const QByteArray &metadata) const
{
lt::error_code ec;
- const lt::bdecode_node resumeDataRoot = lt::bdecode(data, ec);
+ const lt::bdecode_node resumeDataRoot = lt::bdecode(data, ec, nullptr, 100, 10000000);
if (ec)
return nonstd::make_unexpected(tr("Cannot parse resume data: %1").arg(QString::fromStdString(ec.message())));
@@ -263,7 +263,7 @@ BitTorrent::LoadResumeDataResult BitTorrent::BencodeResumeDataStorage::loadTorre
if (!metadata.isEmpty())
{
- const lt::bdecode_node torentInfoRoot = lt::bdecode(metadata, ec);
+ const lt::bdecode_node torentInfoRoot = lt::bdecode(metadata, ec, nullptr, 100, 10000000);
if (ec)
return nonstd::make_unexpected(tr("Cannot parse torrent info: %1").arg(QString::fromStdString(ec.message())));
diff --git a/src/base/bittorrent/dbresumedatastorage.cpp b/src/base/bittorrent/dbresumedatastorage.cpp
index fb0ce33..31d66a2 100644
--- a/src/base/bittorrent/dbresumedatastorage.cpp
+++ b/src/base/bittorrent/dbresumedatastorage.cpp
@@ -228,7 +228,7 @@ namespace BitTorrent
const QByteArray bencodedResumeData = query.value(DB_COLUMN_RESUMEDATA.name).toByteArray();
lt::error_code ec;
- const lt::bdecode_node resumeDataRoot = lt::bdecode(bencodedResumeData, ec);
+ const lt::bdecode_node resumeDataRoot = lt::bdecode(bencodedResumeData, ec, nullptr, 100, 10000000);
lt::add_torrent_params &p = resumeData.ltAddTorrentParams;
@@ -236,7 +236,7 @@ namespace BitTorrent
if (const QByteArray bencodedMetadata = query.value(DB_COLUMN_METADATA.name).toByteArray(); !bencodedMetadata.isEmpty())
{
- const lt::bdecode_node torentInfoRoot = lt::bdecode(bencodedMetadata, ec);
+ const lt::bdecode_node torentInfoRoot = lt::bdecode(bencodedMetadata, ec, nullptr, 100, 10000000);
p.ti = std::make_shared<lt::torrent_info>(torentInfoRoot, ec);
} |
This patch has been tested by more than one user ? |
qBittorrent & operating system versions
qBittorrent v4.5.2
Debian Bookworm
What is the problem?
qBittorrent after adding existent torrents with contentn on a disk via torrent file loosing freshly added torrents after restart.
Steps to reproduce
Additional context
torrent file:
Log(s) & preferences file(s)
The text was updated successfully, but these errors were encountered: