diff --git a/src/common/kiwix/reader.cpp b/src/common/kiwix/reader.cpp index 8e52f8a5..0f799867 100644 --- a/src/common/kiwix/reader.cpp +++ b/src/common/kiwix/reader.cpp @@ -60,7 +60,7 @@ static char charFromHex(std::string a) { void unescapeUrl(string &url) { std::string::size_type pos = 0; - while ((pos = url.find('%', pos + 1)) != std::string::npos && + while ((pos = url.find('%', pos ? pos + 1 : pos)) != std::string::npos && pos + 3 <= url.length()) { url.replace(pos, 3, 1, charFromHex(url.substr(pos + 1, 2))); }