From c4fbf221477925598df837901b231d68acf218f7 Mon Sep 17 00:00:00 2001 From: Jan-Marek Glogowski Date: Thu, 6 Feb 2020 16:24:53 +0000 Subject: neon: escape broken SharePoint 2016 URIs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SharePoint returns broken URIs in its href replies, which aren't correctly URI encoded, but still "valid" URIs w.r.t. general and UTF8 encoding, e.g. http:///Shared%20Documents/ümlaut.docx As a workaround, this allows all invalid / other bytes (except '\0') in the path of the URI in ne_uri_parse. Change-Id: I70e7d323837469d7ced429a42c009972f4fb0ebc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88120 Reviewed-by: Mike Kaganski Reviewed-by: Jan-Marek Glogowski Tested-by: Jenkins (cherry picked from commit 069aa870aadb9f9069e8715c8be30394410f0288) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88187 Reviewed-by: Thorsten Behrens --- external/neon/UnpackedTarball_neon.mk | 1 + external/neon/neon_uri_parse_allow_others.patch | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 external/neon/neon_uri_parse_allow_others.patch (limited to 'external') diff --git a/external/neon/UnpackedTarball_neon.mk b/external/neon/UnpackedTarball_neon.mk index 74ac2eb38c97..725e1916cd28 100644 --- a/external/neon/UnpackedTarball_neon.mk +++ b/external/neon/UnpackedTarball_neon.mk @@ -25,6 +25,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,neon,\ external/neon/neon_fix_lock_token_on_if.patch \ external/neon/neon_fix_lock_timeout_windows.patch \ external/neon/neon_fix_sspi_session_timeout.patch \ + external/neon/neon_uri_parse_allow_others.patch \ )) # vim: set noet sw=4 ts=4: diff --git a/external/neon/neon_uri_parse_allow_others.patch b/external/neon/neon_uri_parse_allow_others.patch new file mode 100644 index 000000000000..9de2cf6b9ae7 --- /dev/null +++ b/external/neon/neon_uri_parse_allow_others.patch @@ -0,0 +1,22 @@ +diff -ur src/ne_uri.c +--- src/ne_uri.c 2020-02-07 10:49:58.764417840 +0000 ++++ src/ne_uri.c 2020-02-07 10:51:33.675627141 +0000 +@@ -87,7 +87,8 @@ + #define URI_PCHAR (URI_UNRESERVED | PC | URI_SUBDELIM | CL | AT) + /* invented: segchar = pchar / "/" */ + /* (TKR) WS added */ +-#define URI_SEGCHAR (URI_PCHAR | FS | WS) ++/* also allow OT characters to parse SharePoint 2016 href URIs with unescaped UTF8 */ ++#define URI_SEGCHAR (URI_PCHAR | FS | WS | OT) + /* query = *( pchar / "/" / "?" ) */ + #define URI_QUERY (URI_PCHAR | FS | QU) + /* fragment == query */ +@@ -237,7 +238,7 @@ + + p = s; + +- while (uri_lookup(*p) & URI_SEGCHAR) ++ while (uri_lookup(*p) & URI_SEGCHAR && *p != '\0') + p++; + + /* => p = [ "?" query ] [ "#" fragment ] */ -- cgit