From 64a10879cb1f3a48b4b44c2e3a46694efb3bec0a Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 28 Dec 2011 16:02:44 -0200 Subject: Disallow spaces in URLs when parsing in StrictMode. Change-Id: I16de68aff2b9e84cc800734c5875aaee9a2ea565 Reviewed-by: Lars Knoll --- src/corelib/io/qurl.cpp | 2 +- tests/auto/corelib/io/qurl/tst_qurl.cpp | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp index d9413ef40c..a83d6ebea4 100644 --- a/src/corelib/io/qurl.cpp +++ b/src/corelib/io/qurl.cpp @@ -1047,7 +1047,7 @@ void QUrlPrivate::parse(const QString &url, QUrl::ParsingMode parsingMode) continue; if ((uc == '%' && (uint(len) < i + 2 || !isHex(data[i + 1]) || !isHex(data[i + 2]))) - || uc < 0x20 || strchr(forbidden, uc)) { + || uc <= 0x20 || strchr(forbidden, uc)) { // found an error errorSupplement = uc; diff --git a/tests/auto/corelib/io/qurl/tst_qurl.cpp b/tests/auto/corelib/io/qurl/tst_qurl.cpp index 7e06dd4e88..5c9e20b9b4 100644 --- a/tests/auto/corelib/io/qurl/tst_qurl.cpp +++ b/tests/auto/corelib/io/qurl/tst_qurl.cpp @@ -1769,15 +1769,13 @@ void tst_QUrl::tolerantParser() QCOMPARE(url.toString(QUrl::FullyEncoded), QString("http://www.example.com/path%20with%20spaces.html")); url.setUrl("http://www.example.com/path%20with spaces.html", QUrl::StrictMode); QVERIFY(!url.isValid()); - QCOMPARE(url.toString(QUrl::FullyEncoded), QString("http://www.example.com/path%20with%20spaces.html")); } { QUrl url = QUrl::fromEncoded("http://www.example.com/path%20with spaces.html"); QVERIFY(url.isValid()); QCOMPARE(url.path(), QString("/path with spaces.html")); url.setEncodedUrl("http://www.example.com/path%20with spaces.html", QUrl::StrictMode); - QVERIFY(url.isValid()); - QCOMPARE(url.toString(QUrl::FullyEncoded), QString("http://www.example.com/path%20with%20spaces.html")); + QVERIFY(!url.isValid()); } { -- cgit v1.2.3