QTest::newRow("url-exec-html-6") << "https://<IP>:/\"><script>alert(1);</script><!--\nTest2"
<< KTextToHTML::Options(KTextToHTML::PreserveSpaces)
<< "https://<IP>:/"><script>alert(1);</script><!--\nTest2";
+
+
+ QTest::newRow("url-with-ref-in-[") << "https://www.kde.org[1]"
+ << KTextToHTML::Options(KTextToHTML::PreserveSpaces)
+ << "<a href=\"https://www.kde.org\">https://www.kde.org</a>[1]";
}
int start = mPos;
bool previousCharIsSpace = false;
bool previousCharIsADoubleQuote = false;
+ bool previousIsAnAnchor = false;
while ((mPos < mText.length()) &&
(mText[mPos].isPrint() || mText[mPos].isSpace()) &&
((afterUrl.isNull() && !mText[mPos].isSpace()) ||
(!afterUrl.isNull() && mText[mPos] != afterUrl))) {
if (mText[mPos].isSpace()) {
previousCharIsSpace = true;
+ } else if (!previousIsAnAnchor && mText[mPos] == QLatin1Char('[')) {
+ break;
} else { // skip whitespace
if (previousCharIsSpace && mText[mPos] == QLatin1Char('<')) {
url.append(QLatin1Char(' '));
} else {
previousCharIsADoubleQuote = false;
}
+ if (mText[mPos] == QLatin1Char('#')) {
+ previousIsAnAnchor = true;
+ }
url.append(mText[mPos]);
if (url.length() > mMaxUrlLen) {
break;