QUrl: Uppercase the version number in IPvFuture

We don't know what it might be used for. The RFC for URI says it's an
HEXDIG, and since we uppercase all other HEXDIGs already (in
percent-encodings...).

Change-Id: I56d0a81315576dd98eaa2657c0307d79332543a5
Reviewed-by: David Faure (KDE) <faure@kde.org>
bb10
Thiago Macieira 2013-07-02 13:32:38 -07:00 committed by The Qt Project
parent 3d77406e27
commit 6130bb22e7
2 changed files with 5 additions and 1 deletions

View File

@ -1105,6 +1105,10 @@ static const QChar *parseIpFuture(QString &host, const QChar *begin, const QChar
// decode the whole string, skipping the "[vH." and "]" which we already know to be there
host += QString::fromRawData(begin, 4);
// uppercase the version, if necessary
if (begin[2].unicode() >= 'a')
host[host.length() - 2] = begin[2].unicode() - 0x20;
begin += 4;
--end;

View File

@ -1636,7 +1636,7 @@ void tst_QUrl::ipvfuture_data()
QTest::newRow("non-hex-version") << "x://[vz.1234]" << false;
QTest::newRow("digit-ver") << "x://[v7.1]" << true << "x://[v7.1]";
QTest::newRow("lowercase-hex-ver") << "x://[va.1]" << true << "x://[va.1]";
QTest::newRow("lowercase-hex-ver") << "x://[va.1]" << true << "x://[vA.1]";
QTest::newRow("lowercase-hex-ver") << "x://[vA.1]" << true << "x://[vA.1]";
QTest::newRow("data-digits") << "x://[v7.1234]" << true << "x://[v7.1234]";