From 4d1f0ccbf31c7aed9629e6b9e9bdd6b903119b11 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Tue, 31 Jul 2012 13:10:54 +0200 Subject: Fix handling of encoded NULs (%00) in QUrl::fromPercentEncoding QString::fromUtf8, without an explicit size, (currently) defaults to stopping at the first NUL. That means we need to pass an explicit size. Also take the opportunity to test that QUrl::toPercentEncoding also works with the same data. Change-Id: I79362d67afda624b01ca07b0315b611c4aa3fdda Reviewed-by: Lars Knoll Reviewed-by: David Faure --- tests/auto/corelib/io/qurl/tst_qurl.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/auto/corelib/io/qurl/tst_qurl.cpp b/tests/auto/corelib/io/qurl/tst_qurl.cpp index 7ee4f74999..f94b0441f8 100644 --- a/tests/auto/corelib/io/qurl/tst_qurl.cpp +++ b/tests/auto/corelib/io/qurl/tst_qurl.cpp @@ -1397,6 +1397,7 @@ void tst_QUrl::compat_decode_data() QTest::newRow("HTTPUrl") << QByteArray("http://qt.nokia.com") << QString("http://qt.nokia.com"); QTest::newRow("HTTPUrlEncoded") << QByteArray("http://qt%20nokia%20com") << QString("http://qt nokia com"); QTest::newRow("EmptyString") << QByteArray("") << QString(""); + QTest::newRow("NulByte") << QByteArray("C%00%0A") << QString::fromLatin1("C\0\n", 3); QTest::newRow("Task27166") << QByteArray("Fran%C3%A7aise") << QString::fromUtf8("Française"); } @@ -1419,6 +1420,7 @@ void tst_QUrl::compat_encode_data() QTest::newRow("HTTPUrl") << QString("http://qt.nokia.com") << QByteArray("http%3A//qt.nokia.com"); QTest::newRow("HTTPUrlEncoded") << QString("http://qt nokia com") << QByteArray("http%3A//qt%20nokia%20com"); QTest::newRow("EmptyString") << QString("") << QByteArray(""); + QTest::newRow("NulByte") << QString::fromLatin1("C\0\n", 3) << QByteArray("C%00%0A"); QTest::newRow("Task27166") << QString::fromUtf8("Française") << QByteArray("Fran%C3%A7aise"); } @@ -1427,7 +1429,7 @@ void tst_QUrl::compat_encode() QFETCH(QString, decodedString); QFETCH(QByteArray, encodedString); - QCOMPARE(QUrl::toPercentEncoding(decodedString, "/.").constData(), encodedString.constData()); + QCOMPARE(QUrl::toPercentEncoding(decodedString, "/."), encodedString); } -- cgit v1.2.3