From 27115557a0ab6356b659ed45bc9634a880107828 Mon Sep 17 00:00:00 2001 From: Tsuda Kageyu Date: Wed, 3 Apr 2013 09:21:48 +0900 Subject: [PATCH] Avoid possible iterators' out-of-range --- taglib/toolkit/tbytevector.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/taglib/toolkit/tbytevector.cpp b/taglib/toolkit/tbytevector.cpp index 82aeb05e..3007be66 100644 --- a/taglib/toolkit/tbytevector.cpp +++ b/taglib/toolkit/tbytevector.cpp @@ -166,13 +166,19 @@ namespace TagLib { TIterator itBuffer = it; TIterator itPattern = patternBegin + patternSize - 1; - while(itPattern >= patternBegin && *itBuffer == *itPattern) { - --itBuffer; - --itPattern; - } + while(*itBuffer == *itPattern) + { + if(itPattern == patternBegin) + { + if((itBuffer - dataBegin - offset) % byteAlign == 0) + return (itBuffer - dataBegin); + else + break; + } - if(itPattern < patternBegin && (itBuffer - dataBegin + 1 - offset) % byteAlign == 0) - return (itBuffer - dataBegin + 1); + --itBuffer; + --itPattern; + } } return ByteVector::npos;