Blob Blame History Raw
From a17fc85b51a6bdcfa33dcff183d2b7efd667fb92 Mon Sep 17 00:00:00 2001
From: Thiago Macieira <thiago.macieira@intel.com>
Date: Tue, 8 Jan 2013 12:34:46 -0200
Subject: [PATCH 112/246] Limit the range of the QUrlPrivate::port to -1 to
 65535

The internal parser can read values outside this range (and cannot
report an error), but QUrl::port() must not return something outside
that range. The correct solution would be to report an error, like in
Qt 5, but that cannot easily be done.

The rewritten parser in Qt 5 is not affected by this issue.

Task-number: QTBUG-28985
Change-Id: I3cf595384f14272197dcfb85943213c8f8ddeba0
Reviewed-by: David Faure (KDE) <faure@kde.org>
---
 src/corelib/io/qurl.cpp      |  2 +-
 tests/auto/qurl/tst_qurl.cpp | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp
index 551a990..cf84eb5 100644
--- a/src/corelib/io/qurl.cpp
+++ b/src/corelib/io/qurl.cpp
@@ -3920,7 +3920,7 @@ void QUrlPrivate::parse(ParseOptions parseOptions) const
 
         QByteArray h(parseData.host, parseData.hostLength);
         that->host = fromPercentEncodingMutable(&h);
-        that->port = parseData.port;
+        that->port = uint(parseData.port) <= 0xffffU ? parseData.port : -1;
 
         that->path.clear();
         that->encodedPath = QByteArray(parseData.path, parseData.pathLength);
-- 
1.8.1.4