When the URL encoded in the vnd.sun.star.pkg URL's authority contains a "@" (e.g., because it is a file URL denoting a pathname containging a "@" in one of the segments), that "@" need not be encoded (cf. the grammar at the top of tools/source/fsys/urlobj.cxx) and INetURLObject::GetHost would only return the part following the "@".
When constructing sBaseURI in ODatabaseContext::loadObjectFromURL (dbaccess/source/core/dataaccess/databasecontext.cxx), the path part shall obviously not be decoded (but which the original code erroneously did). However, when obtaining sStreamRelPath in ODBFilter::implImport (dbaccess/source/filter/xml/xmlfilter.cxx), it isn't clear to me whether the path should be decoded, so I left that in (and added a TODO).
(Caused `make CppunitTest_sw_uiwriter CPPUNIT_TEST_NAME=SwUiWriterTest::testEmbeddedDataSource` to fail when SRCDIR is such a pathname containing a "@" in one of the segments.)
Change-Id: I6ffd842f3f3d37d2682e7cf14399fb3dbfa0a2aa Reviewed-on: https://gerrit.libreoffice.org/55286
e310ac4ab942 Properly decompose vnd.sun.star.pkg URL
.../source/core/dataaccess/databasecontext.cxx | 24 +++++++++++--
dbaccess/source/filter/xml/xmlfilter.cxx | 40 ++++++++++++++++++----
2 files changed, 56 insertions(+), 8 deletions(-)