From 3c54fc2f6162e6082201cd4e03444dbe4c19d402 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 5 Nov 2016 12:19:07 +0100 Subject: Fix parsing Lists and Dictionaries Corner case: Don't crash if Lists or Dictionaries end at EOF. Check if mPos is still in range. --- torrentparser.cpp | 4 ++-- 1 file 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 TorrentParser::parseList(){ } ++mPos; QList retval; - while(mData.at(mPos) != 'e'){ + while(mPos < mData.size() && mData.at(mPos) != 'e'){ retval.append(parseObject()); } ++mPos; @@ -115,7 +115,7 @@ const QHash 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()){ -- cgit v1.2.3-70-g09d2