fdo#43895 lp#905355: Never let users save in /tmp by default
This commit is contained in:
committed by
Bjoern Michaelsen
parent
fd065e692a
commit
dd2fe95cce
@@ -101,6 +101,9 @@
|
|||||||
#include <sfxlocal.hrc>
|
#include <sfxlocal.hrc>
|
||||||
#include <rtl/oustringostreaminserter.hxx>
|
#include <rtl/oustringostreaminserter.hxx>
|
||||||
#include <rtl/strbuf.hxx>
|
#include <rtl/strbuf.hxx>
|
||||||
|
#ifdef UNX
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -1635,6 +1638,24 @@ void FileDialogHelper_Impl::getRealFilter( String& _rFilter ) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FileDialogHelper_Impl::verifyPath()
|
||||||
|
{
|
||||||
|
#ifdef UNX
|
||||||
|
struct stat aFileStat;
|
||||||
|
const OString sFullPath = OUStringToOString( maPath.copy(RTL_CONSTASCII_LENGTH("file://")) + maFileName, osl_getThreadTextEncoding() );
|
||||||
|
stat( sFullPath.getStr(), &aFileStat );
|
||||||
|
// lp#905355, fdo#43895
|
||||||
|
// Check that the file has read only permission and is in /tmp -- this is
|
||||||
|
// the case if we have opened the file from the web with firefox only.
|
||||||
|
if ( maPath.reverseCompareToAsciiL("file:///tmp",11) == 0 &&
|
||||||
|
( aFileStat.st_mode & (S_IRWXO + S_IRWXG + S_IRWXU) ) == S_IRUSR )
|
||||||
|
{
|
||||||
|
maPath = SvtPathOptions().GetWorkPath();
|
||||||
|
mxFileDlg->setDisplayDirectory( maPath );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
void FileDialogHelper_Impl::displayFolder( const ::rtl::OUString& _rPath )
|
void FileDialogHelper_Impl::displayFolder( const ::rtl::OUString& _rPath )
|
||||||
{
|
{
|
||||||
@@ -1648,6 +1669,7 @@ void FileDialogHelper_Impl::displayFolder( const ::rtl::OUString& _rPath )
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
mxFileDlg->setDisplayDirectory( maPath );
|
mxFileDlg->setDisplayDirectory( maPath );
|
||||||
|
verifyPath();
|
||||||
}
|
}
|
||||||
catch( const IllegalArgumentException& )
|
catch( const IllegalArgumentException& )
|
||||||
{
|
{
|
||||||
@@ -1665,6 +1687,7 @@ void FileDialogHelper_Impl::setFileName( const ::rtl::OUString& _rFile )
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
mxFileDlg->setDefaultName( maFileName );
|
mxFileDlg->setDefaultName( maFileName );
|
||||||
|
verifyPath();
|
||||||
}
|
}
|
||||||
catch( const IllegalArgumentException& )
|
catch( const IllegalArgumentException& )
|
||||||
{
|
{
|
||||||
|
@@ -152,6 +152,8 @@ namespace sfx2
|
|||||||
|
|
||||||
void implInitializeFileName( );
|
void implInitializeFileName( );
|
||||||
|
|
||||||
|
void verifyPath( );
|
||||||
|
|
||||||
void implGetAndCacheFiles( const ::com::sun::star::uno::Reference< XInterface >& xPicker ,
|
void implGetAndCacheFiles( const ::com::sun::star::uno::Reference< XInterface >& xPicker ,
|
||||||
std::vector<rtl::OUString>& rpURLList,
|
std::vector<rtl::OUString>& rpURLList,
|
||||||
const SfxFilter* pFilter );
|
const SfxFilter* pFilter );
|
||||||
|
Reference in New Issue
Block a user