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

New commits:
commit 97af6ccd95b9548723c2baa4b051c049c47bc8ea
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Wed Nov 24 19:52:10 2021 +0100
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Thu Nov 25 18:53:05 2021 +0100

    ucb: webdav-curl: Sharepoint returns redirect urls that curl can't parse
    
    Encode them just like in WebDAVResponseParser.
    
    Change-Id: I7f0ee1d42df356fdd585d1f6e0f39e4094701a2a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125787
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>

diff --git a/ucb/source/ucp/webdav-curl/CurlSession.cxx 
b/ucb/source/ucp/webdav-curl/CurlSession.cxx
index 509c7bc24629..1c9da506df8e 100644
--- a/ucb/source/ucp/webdav-curl/CurlSession.cxx
+++ b/ucb/source/ucp/webdav-curl/CurlSession.cxx
@@ -1012,10 +1012,14 @@ auto CurlProcessor::ProcessRequestImpl(
                 assert(rc == CURLE_OK);
                 if (pRedirectURL)
                 {
-                    throw DAVException(DAVException::DAV_HTTP_REDIRECT,
-                                       pRedirectURL ? OUString(pRedirectURL, 
strlen(pRedirectURL),
-                                                               
RTL_TEXTENCODING_UTF8)
-                                                    : OUString());
+                    // Sharepoint 2016 workaround: contains unencoded U+0020
+                    OUString const redirectURL(::rtl::Uri::encode(
+                        pRedirectURL
+                            ? OUString(pRedirectURL, strlen(pRedirectURL), 
RTL_TEXTENCODING_UTF8)
+                            : OUString(),
+                        rtl_UriCharClassUric, rtl_UriEncodeKeepEscapes, 
RTL_TEXTENCODING_UTF8));
+
+                    throw DAVException(DAVException::DAV_HTTP_REDIRECT, 
redirectURL);
                 }
                 [[fallthrough]];
             }

Reply via email to