38 lines
1.4 KiB
Diff
38 lines
1.4 KiB
Diff
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
|
|
|