diff options
author | Martin Negyokru <negyokru@inf.u-szeged.hu> | 2023-06-06 15:53:46 +0200 |
---|---|---|
committer | Martin Negyokru <negyokru@inf.u-szeged.hu> | 2023-06-12 19:33:38 +0000 |
commit | 4a79ac857cb675abbd989f5b9ae21dea8016e74e (patch) | |
tree | 89f486ff7bd83db7264a1dff7f110c681d878693 /src/core/net | |
parent | fc86aaa6c0eda5246eb1d03c1c53884c64104976 (diff) |
Validate QNetworkProxy::applicationProxy configs
Invalid proxy settings may result in a crash in chromium.
Use chromium's helper function that validates proxy configs
instead of constructing net::ProxyServer manually.
On invalid input, result will be a `SCHEME_INVALID` ProxyServer.
Fixes: QTBUG-113992
Pick-to: 6.5 6.6
Change-Id: I1745ae3c3cd4da40d3d8b92a14f752ac9b3f8d31
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/core/net')
-rw-r--r-- | src/core/net/proxy_config_service_qt.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/core/net/proxy_config_service_qt.cpp b/src/core/net/proxy_config_service_qt.cpp index 70bcb59b4..fcce08550 100644 --- a/src/core/net/proxy_config_service_qt.cpp +++ b/src/core/net/proxy_config_service_qt.cpp @@ -16,14 +16,15 @@ net::ProxyServer ProxyConfigServiceQt::fromQNetworkProxy(const QNetworkProxy &qtProxy) { - net::HostPortPair hostPortPair(qtProxy.hostName().toStdString(), qtProxy.port()); + std::string host = qtProxy.hostName().toStdString(); + uint16_t port = qtProxy.port(); switch (qtProxy.type()) { case QNetworkProxy::Socks5Proxy: - return net::ProxyServer(net::ProxyServer::SCHEME_SOCKS5, hostPortPair); + return net::ProxyServer::FromSchemeHostAndPort(net::ProxyServer::SCHEME_SOCKS5, host, port); case QNetworkProxy::HttpProxy: case QNetworkProxy::HttpCachingProxy: case QNetworkProxy::FtpCachingProxy: - return net::ProxyServer(net::ProxyServer::SCHEME_HTTP, hostPortPair); + return net::ProxyServer::FromSchemeHostAndPort(net::ProxyServer::SCHEME_HTTP, host, port); case QNetworkProxy::NoProxy: case QNetworkProxy::DefaultProxy: return net::ProxyServer(net::ProxyServer::SCHEME_DIRECT, net::HostPortPair()); |