summaryrefslogtreecommitdiff
path: root/sal
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@collabora.com>2016-03-28 22:02:41 +0100
committerMichael Meeks <michael.meeks@collabora.com>2016-03-29 10:04:52 +0000
commit017a864caf4c57f1dcff28fce824f2a41ea6e027 (patch)
tree5131b52e2d167cb7f173db4ae0c99a550b51922f /sal
parent33482731bf0dc8736112f703f14a059231091670 (diff)
handle failure to expand ~ in path elements.
This can occur in some online corner-cases. Change-Id: Id8b419179d775a21110d682ba76d8a02f45eb828 Reviewed-on: https://gerrit.libreoffice.org/23577 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Diffstat (limited to 'sal')
-rw-r--r--sal/osl/unx/file_url.cxx7
1 files changed, 5 insertions, 2 deletions
diff --git a/sal/osl/unx/file_url.cxx b/sal/osl/unx/file_url.cxx
index cc9907a96060..6c279f57cbbf 100644
--- a/sal/osl/unx/file_url.cxx
+++ b/sal/osl/unx/file_url.cxx
@@ -257,20 +257,23 @@ oslFileError SAL_CALL osl_getFileURLFromSystemPath( rtl_uString *ustrSystemPath,
if( '~' == ustrSystemPath->buffer[0] )
{
/* check if another user is specified */
- if( ( 1 == ustrSystemPath->length ) || ( '/' == ustrSystemPath->buffer[1] ) )
+ if( ( 1 == ustrSystemPath->length ) ||
+ ( '/' == ustrSystemPath->buffer[1] ) )
{
/* osl_getHomeDir returns file URL */
oslSecurity pSecurity = osl_getCurrentSecurity();
osl_getHomeDir( pSecurity , &pTmp );
osl_freeSecurityHandle( pSecurity );
+ if (!pTmp)
+ return osl_File_E_INVAL;
+
/* remove "file://" prefix */
rtl_uString_newFromStr_WithLength( &pTmp, pTmp->buffer + 7, pTmp->length - 7 );
/* replace '~' in original string */
rtl_uString_newReplaceStrAt( &pTmp, ustrSystemPath, 0, 1, pTmp );
}
-
else
{
/* FIXME: replace ~user with users home directory */