diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2023-08-18 13:49:54 +0200 |
---|---|---|
committer | Michael Stahl <michael.stahl@allotropia.de> | 2023-09-28 13:05:21 +0200 |
commit | 174b3a7e48393577c815037a3bc8146470dcf78e (patch) | |
tree | 6656a319786112cae45a7a25f0d277e78f677030 | |
parent | 9b1fdad86d0e652f134a5d78dc6f9aefd35bf739 (diff) |
Fix curl proxy access for non-authenticated proxy
If rSession.m_Proxy.aName is a simple host-name, the CurlUri constructor
will fail with CURLUE_BAD_SCHEME, so just ignore the error here,
we only care about parsing out the username/password
Change-Id: Iec2d6e7315a5899ddddf6120a43199b75bf62db2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155834
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
(cherry picked from commit 9b30b4b1678e8be15ba51d236bd9a3e693d8d3d6)
-rw-r--r-- | ucb/source/ucp/webdav-curl/CurlSession.cxx | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/ucb/source/ucp/webdav-curl/CurlSession.cxx b/ucb/source/ucp/webdav-curl/CurlSession.cxx index 407d91f19248..2a15b9faea5b 100644 --- a/ucb/source/ucp/webdav-curl/CurlSession.cxx +++ b/ucb/source/ucp/webdav-curl/CurlSession.cxx @@ -1251,11 +1251,18 @@ auto CurlProcessor::ProcessRequest( ::std::optional<Auth> oAuthProxy; if (pEnv && !rSession.m_isAuthenticatedProxy && !rSession.m_Proxy.aName.isEmpty()) { - // the hope is that this must be a URI - CurlUri const uri(rSession.m_Proxy.aName); - if (!uri.GetUser().isEmpty() || !uri.GetPassword().isEmpty()) + try + { + // the hope is that this must be a URI + CurlUri const uri(rSession.m_Proxy.aName); + if (!uri.GetUser().isEmpty() || !uri.GetPassword().isEmpty()) + { + oAuthProxy.emplace(uri.GetUser(), uri.GetPassword(), CURLAUTH_ANY); + } + } + catch (DAVException&) { - oAuthProxy.emplace(uri.GetUser(), uri.GetPassword(), CURLAUTH_ANY); + // ignore any parsing failure here } } decltype(CURLAUTH_ANY) const authSystem(CURLAUTH_NEGOTIATE | CURLAUTH_NTLM | CURLAUTH_NTLM_WB); |