[Libreoffice-commits] core.git: Branch 'libreoffice-5-2' - external/libcmis ucb/source

Mike Kaganski mike.kaganski at collabora.com
Wed Aug 10 10:05:44 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 027227f5f7672f30a45b17d4f5d12e66eb36876b
Author: Mike Kaganski <mike.kaganski at collabora.com>
Date:   Mon Aug 8 21:29:09 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().
    
    libcmis part of the patch will hopefully soon be merged upstream.
    
    Change-Id: I0f3b9930748de3fe4763eb27721739f097b9892d
    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)
    Reviewed-on: https://gerrit.libreoffice.org/28011
    Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>

diff --git a/external/libcmis/UnpackedTarball_cmis.mk b/external/libcmis/UnpackedTarball_cmis.mk
index bd66e2e..8fb247f 100644
--- a/external/libcmis/UnpackedTarball_cmis.mk
+++ b/external/libcmis/UnpackedTarball_cmis.mk
@@ -17,6 +17,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,cmis, \
 						external/libcmis/libcmis-libxml2_compatibility.patch \
 						external/libcmis/libcmis-fix-google-drive.patch \
 						external/libcmis/libcmis-google-2FA-implementation.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 b097a6f..d82c626 100644
--- a/ucb/source/ucp/cmis/cmis_content.cxx
+++ b/ucb/source/ucp/cmis/cmis_content.cxx
@@ -522,7 +522,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