summaryrefslogtreecommitdiffstats
path: root/torrentparser.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2016-11-05 12:19:07 +0100
committerArno <arno@disconnect.de>2016-11-05 12:19:07 +0100
commit3c54fc2f6162e6082201cd4e03444dbe4c19d402 (patch)
treeb0f17b5965b0d7e77587c6f23405797c37e99e4e /torrentparser.cpp
parentd6705df21f9c2edca5b4b7a4594815d18ba4469f (diff)
downloadShemovCleaner-3c54fc2f6162e6082201cd4e03444dbe4c19d402.tar.gz
ShemovCleaner-3c54fc2f6162e6082201cd4e03444dbe4c19d402.tar.bz2
ShemovCleaner-3c54fc2f6162e6082201cd4e03444dbe4c19d402.zip
Fix parsing Lists and Dictionaries
Corner case: Don't crash if Lists or Dictionaries end at EOF. Check if mPos is still in range.
Diffstat (limited to 'torrentparser.cpp')
-rw-r--r--torrentparser.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/torrentparser.cpp b/torrentparser.cpp
index cd2fde4..635d8a7 100644
--- a/torrentparser.cpp
+++ b/torrentparser.cpp
@@ -102,7 +102,7 @@ const QList<QVariant> TorrentParser::parseList(){
}
++mPos;
QList<QVariant> retval;
- while(mData.at(mPos) != 'e'){
+ while(mPos < mData.size() && mData.at(mPos) != 'e'){
retval.append(parseObject());
}
++mPos;
@@ -115,7 +115,7 @@ const QHash<QString,QVariant> TorrentParser::parseDict(){
return retval;
}
++mPos;
- while(mData.at(mPos) != 'e'){
+ while(mPos < mData.size() && mData.at(mPos) != 'e'){
QString key = parseString();
QVariant value = parseObject();
if(key.isEmpty() || value.isNull()){