ucb/source/ucp/webdav-curl/CurlSession.cxx |   15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

New commits:
commit 1c7d3ea4fe9f5bc180ca572d23a34c728992519e
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Fri Aug 18 13:49:54 2023 +0200
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Thu Sep 28 13:00:39 2023 +0200

    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.gran...@collabora.co.uk>
    (cherry picked from commit 9b30b4b1678e8be15ba51d236bd9a3e693d8d3d6)

diff --git a/ucb/source/ucp/webdav-curl/CurlSession.cxx 
b/ucb/source/ucp/webdav-curl/CurlSession.cxx
index 91b1ac4ce679..db52355d4472 100644
--- a/ucb/source/ucp/webdav-curl/CurlSession.cxx
+++ b/ucb/source/ucp/webdav-curl/CurlSession.cxx
@@ -1205,11 +1205,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);

Reply via email to