summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlivier Goffart <olivier.goffart@nokia.com>2010-04-26 13:16:34 (GMT)
committerOlivier Goffart <olivier.goffart@nokia.com>2010-05-14 10:06:07 (GMT)
commite301c82693c33c0f96c6a756d15fe35a9d877443 (patch)
tree39bb324ad81c925e1a77f860f0ea766a74ca81fe
parent153da73cd575763c03e6e03aee5243b52dc126bd (diff)
downloadQt-e301c82693c33c0f96c6a756d15fe35a9d877443.zip
Qt-e301c82693c33c0f96c6a756d15fe35a9d877443.tar.gz
Qt-e301c82693c33c0f96c6a756d15fe35a9d877443.tar.bz2
QUrl: parsing of host name with an undercore.
This is not supposed to be allowed, but it work with other browsers Rask-number: QTBUG-7434 Reviewed-by: Thiago Reviewed-by: Markus Goetz (cherry picked from commit a8065da96b96fcc4baeca7615c2a4195c05cbc03)
-rw-r--r--src/corelib/io/qurl.cpp4
-rw-r--r--tests/auto/qurl/tst_qurl.cpp6
2 files changed, 8 insertions, 2 deletions
diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp
index bdb0cfd..eb1834c 100644
--- a/src/corelib/io/qurl.cpp
+++ b/src/corelib/io/qurl.cpp
@@ -2990,7 +2990,9 @@ bool qt_check_std3rules(const QChar *uc, int len)
// only LDH is present
if (c == '-' || (c >= '0' && c <= '9')
|| (c >= 'A' && c <= 'Z')
- || (c >= 'a' && c <= 'z'))
+ || (c >= 'a' && c <= 'z')
+ //underscore is not supposed to be allowed, but other browser accept it (QTBUG-7434)
+ || c == '_')
continue;
return false;
diff --git a/tests/auto/qurl/tst_qurl.cpp b/tests/auto/qurl/tst_qurl.cpp
index 8dffebb..ede6cde 100644
--- a/tests/auto/qurl/tst_qurl.cpp
+++ b/tests/auto/qurl/tst_qurl.cpp
@@ -1631,6 +1631,10 @@ void tst_QUrl::toString_data()
QTest::newRow("nopath_task31320") << QString::fromLatin1("host://protocol")
<< uint(QUrl::None)
<< QString::fromLatin1("host://protocol");
+
+ QTest::newRow("underscore_QTBUG-7434") << QString::fromLatin1("http://foo_bar.host.com/rss.php")
+ << uint(QUrl::None)
+ << QString::fromLatin1("http://foo_bar.host.com/rss.php");
}
void tst_QUrl::toString()
@@ -3269,7 +3273,6 @@ void tst_QUrl::std3violations_data()
QTest::newRow("question") << "foo?bar" << true;
QTest::newRow("at") << "foo@bar" << true;
QTest::newRow("backslash") << "foo\\bar" << false;
- QTest::newRow("underline") << "foo_bar" << false;
// these characters are transformed by NFKC to non-LDH characters
QTest::newRow("dot-like") << QString::fromUtf8("foo\342\200\244bar") << false; // U+2024 ONE DOT LEADER
@@ -3314,6 +3317,7 @@ void tst_QUrl::std3deviations_data()
QTest::newRow("ending-dot") << "example.com.";
QTest::newRow("ending-dot3002") << QString("example.com") + QChar(0x3002);
+ QTest::newRow("underline") << "foo_bar"; //QTBUG-7434
}
void tst_QUrl::std3deviations()