diff options
author | Arno <arno@disconnect.de> | 2016-11-05 12:19:07 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2016-11-05 12:19:07 +0100 |
commit | 3c54fc2f6162e6082201cd4e03444dbe4c19d402 (patch) | |
tree | b0f17b5965b0d7e77587c6f23405797c37e99e4e | |
parent | d6705df21f9c2edca5b4b7a4594815d18ba4469f (diff) | |
download | ShemovCleaner-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.
-rw-r--r-- | torrentparser.cpp | 4 |
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()){ |