[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.1' - external/libcmis ucb/source
Mike Kaganski
mike.kaganski at collabora.com
Wed Aug 10 14:40:40 UTC 2016
external/libcmis/UnpackedTarball_cmis.mk | 1
external/libcmis/libcmis-sharepoint-repository-root.patch | 24 ++++++++++++++
ucb/source/ucp/cmis/cmis_content.cxx | 2 -
3 files changed, 26 insertions(+), 1 deletion(-)
New commits:
commit ea8ba40c06fe2d0702c6dba22d1d4bed4af306b5
Author: Mike Kaganski <mike.kaganski at collabora.com>
Date: Wed Aug 10 21:01:19 2016 +1000
tdf#101385: don't try to get SharePoint folder outside of allowed range
for a given site.
This patch uses the fact that getFolderByServerRelativeUrl API returns
site's root folder if used with empty path ('').
Hopefully this isn't otherwise context-dependent, so that it doesn't
return other folders in some unknown circumstances.
More correct would be instead to use the site's root path directly,
like '/sites/mysite'. But I don't know a reliable way to filter the
API part from the base URI.
To make use of the corrected SharePoint repository root id, the patch
also redirects all cases where "/" object is queried, to session's
getRootFolder().
Reviewed-on: https://gerrit.libreoffice.org/27987
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: David Tardon <dtardon at redhat.com>
(cherry picked from commit 1b482aec4e7b6aec86fb20bcda555c4060a80332)
Change-Id: Id31b4c2be0d8d81b94c0e9307acdfbc9e6441828
Reviewed-on: https://gerrit.libreoffice.org/28015
Reviewed-by: Jan Holesovsky <kendy at collabora.com>
Tested-by: Jan Holesovsky <kendy at collabora.com>
diff --git a/external/libcmis/UnpackedTarball_cmis.mk b/external/libcmis/UnpackedTarball_cmis.mk
index b203f47..039e361d 100644
--- a/external/libcmis/UnpackedTarball_cmis.mk
+++ b/external/libcmis/UnpackedTarball_cmis.mk
@@ -18,6 +18,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,cmis, \
external/libcmis/tdf90351.patch \
external/libcmis/http_auth.patch \
external/libcmis/libcmis-fix-google-drive.patch \
+ external/libcmis/libcmis-sharepoint-repository-root.patch \
))
ifeq ($(OS)$(COM),WNTMSC)
diff --git a/external/libcmis/libcmis-sharepoint-repository-root.patch b/external/libcmis/libcmis-sharepoint-repository-root.patch
new file mode 100644
index 0000000..f89b134
--- /dev/null
+++ b/external/libcmis/libcmis-sharepoint-repository-root.patch
@@ -0,0 +1,24 @@
+diff --git a/src/libcmis/sharepoint-repository.cxx b/src/libcmis/sharepoint-repository.cxx
+index 780624d..f992689 100644
+--- a/src/libcmis/sharepoint-repository.cxx
++++ b/src/libcmis/sharepoint-repository.cxx
+@@ -35,7 +35,18 @@ SharePointRepository::SharePointRepository( std::string baseUrl ) :
+ m_description = "SharePoint repository";
+ m_productName = "SharePoint";
+ m_productVersion = "2010/2013";
+- m_rootId = baseUrl + "/getFolderByServerRelativeUrl('/')";
++ // getFolderByServerRelativeUrl() API expects path to be
++ // *server-relative*, i.e. they must include site path.
++ // Given the baseUrl like "https://sp2013/sites/mysite/_api/Web"
++ // for a site "mysite" on sharepoint server "sp2013",
++ // the site root is '/sites/mysite/', not '/'.
++ // Trying to get folder '/' results in "Value does not fall
++ // within expected range" error.
++ // Preferrable here is to extract the root path from baseUrl,
++ // stripping server and api parts. But it can be unreliable
++ // if api part (_api/Web) is different for some server.
++ // On the other side, just querying empty path '' gives the root folder.
++ m_rootId = baseUrl + "/getFolderByServerRelativeUrl('')";
+
+ m_capabilities[ ACL ] = "discover";
+ m_capabilities[ AllVersionsSearchable ] = "true";
diff --git a/ucb/source/ucp/cmis/cmis_content.cxx b/ucb/source/ucp/cmis/cmis_content.cxx
index 9963632..0cfc651 100644
--- a/ucb/source/ucp/cmis/cmis_content.cxx
+++ b/ucb/source/ucp/cmis/cmis_content.cxx
@@ -504,7 +504,7 @@ namespace cmis
throw libcmis::Exception( "Object not found" );
}
}
- else if ( !m_sObjectPath.isEmpty( ) )
+ else if (!(m_sObjectPath.isEmpty() || m_sObjectPath == "/"))
{
try
{
More information about the Libreoffice-commits
mailing list