Kaydet (Commit) 017a864c authored tarafından Michael Meeks's avatar Michael Meeks

handle failure to expand ~ in path elements.

This can occur in some online corner-cases.

Change-Id: Id8b419179d775a21110d682ba76d8a02f45eb828
Reviewed-on: https://gerrit.libreoffice.org/23577Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarMichael Meeks <michael.meeks@collabora.com>
üst 33482731
......@@ -822,9 +822,8 @@ OUString SubstitutePathVariables::GetHomeVariableValue() const
OUString SubstitutePathVariables::GetPathVariableValue() const
{
OUString aRetStr;
const char* pEnv = getenv( "PATH" );
const char* pEnv = getenv( "PATH" );
if ( pEnv )
{
......@@ -838,9 +837,10 @@ OUString SubstitutePathVariables::GetPathVariableValue() const
do
{
OUString sToken = aPathList.getToken(0, SAL_PATHSEPARATOR, nToken);
if (!sToken.isEmpty())
if (!sToken.isEmpty() &&
osl::FileBase::getFileURLFromSystemPath( sToken, aTmp ) ==
osl::FileBase::RC::E_None )
{
osl::FileBase::getFileURLFromSystemPath( sToken, aTmp );
if ( bAppendSep )
aPathStrBuffer.append( ";" ); // Office uses ';' as path separator
aPathStrBuffer.append( aTmp );
......
......@@ -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 */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment