From 9e3a0456955cc74ff7212c35d2dea74d91c740b3 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Wed, 23 Apr 2025 19:05:17 +0200 Subject: [PATCH] Add a proxy configuration page: fix crash on invalid proxy (#1902) Remove PAC size limit (see https://github.com/ungoogled-software/ungoogled-chromium/pull/3203) --- .../Add-a-proxy-configuration-page.patch | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/build/patches/Add-a-proxy-configuration-page.patch b/build/patches/Add-a-proxy-configuration-page.patch index e4e40be5..e4b8838c 100644 --- a/build/patches/Add-a-proxy-configuration-page.patch +++ b/build/patches/Add-a-proxy-configuration-page.patch @@ -38,9 +38,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../proxy_config/proxy_config_dictionary.cc | 30 +- .../proxy_config/proxy_config_dictionary.h | 7 +- .../proxy_config/proxy_policy_handler.cc | 2 +- - net/proxy_resolution/proxy_config.cc | 51 ++- + net/proxy_resolution/pac_file_fetcher_impl.cc | 8 - + net/proxy_resolution/proxy_config.cc | 53 ++- net/proxy_resolution/proxy_config.h | 3 + - 25 files changed, 984 insertions(+), 18 deletions(-) + 26 files changed, 986 insertions(+), 26 deletions(-) create mode 100644 chrome/browser/resources/proxy_config.css create mode 100644 chrome/browser/resources/proxy_config.html create mode 100644 chrome/browser/resources/proxy_config.js @@ -1328,6 +1329,24 @@ diff --git a/components/proxy_config/proxy_policy_handler.cc b/components/proxy_ } break; } +diff --git a/net/proxy_resolution/pac_file_fetcher_impl.cc b/net/proxy_resolution/pac_file_fetcher_impl.cc +--- a/net/proxy_resolution/pac_file_fetcher_impl.cc ++++ b/net/proxy_resolution/pac_file_fetcher_impl.cc +@@ -359,14 +359,6 @@ bool PacFileFetcherImpl::ConsumeBytesRead(URLRequest* request, int num_bytes) { + return false; + } + +- // Enforce maximum size bound. +- if (num_bytes + bytes_read_so_far_.size() > +- static_cast(max_response_bytes_)) { +- result_code_ = ERR_FILE_TOO_BIG; +- request->Cancel(); +- return false; +- } +- + bytes_read_so_far_.append(buf_->data(), num_bytes); + return true; + } diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_config.cc --- a/net/proxy_resolution/proxy_config.cc +++ b/net/proxy_resolution/proxy_config.cc @@ -1340,7 +1359,7 @@ diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_c } // Trim whitespace off the url scheme. -@@ -160,6 +160,55 @@ void ProxyConfig::ProxyRules::ParseFromString(const std::string& proxy_rules, +@@ -160,6 +160,57 @@ void ProxyConfig::ProxyRules::ParseFromString(const std::string& proxy_rules, } } @@ -1348,8 +1367,10 @@ diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_c + if (type == Type::PROXY_LIST) { + std::string proxy_list; + for (const auto& proxy_chain : single_proxies.AllChains()) { -+ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0); -+ proxy_list += ProxyServerToProxyUri(proxy_server) + ";"; ++ if (proxy_chain.length()) { ++ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0); ++ proxy_list += ProxyServerToProxyUri(proxy_server) + ";"; ++ } + } + // remove last semicolon + if (proxy_list.length() != 0 ) {