Disallow spaces in URLs when parsing in StrictMode.
authorThiago Macieira <thiago.macieira@intel.com>
Wed, 28 Dec 2011 18:02:44 +0000 (16:02 -0200)
committerQt by Nokia <qt-info@nokia.com>
Thu, 29 Mar 2012 23:19:59 +0000 (01:19 +0200)
Change-Id: I16de68aff2b9e84cc800734c5875aaee9a2ea565
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
src/corelib/io/qurl.cpp
tests/auto/corelib/io/qurl/tst_qurl.cpp

index d9413ef..a83d6eb 100644 (file)
@@ -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;
 
index 7e06dd4..5c9e20b 100644 (file)
@@ -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());
     }
 
     {