diff options
author | Michael Meeks <michael.meeks@collabora.com> | 2016-03-28 22:02:41 +0100 |
---|---|---|
committer | Michael Meeks <michael.meeks@collabora.com> | 2016-03-29 10:04:52 +0000 |
commit | 017a864caf4c57f1dcff28fce824f2a41ea6e027 (patch) | |
tree | 5131b52e2d167cb7f173db4ae0c99a550b51922f /sal | |
parent | 33482731bf0dc8736112f703f14a059231091670 (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.cxx | 7 |
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 */ |