Kaydet (Commit) dd2fe95c authored tarafından Andrzej J. R. Hunt's avatar Andrzej J. R. Hunt Kaydeden (comit) Bjoern Michaelsen

fdo#43895 lp#905355: Never let users save in /tmp by default

üst fd065e69
......@@ -101,6 +101,9 @@
#include <sfxlocal.hrc>
#include <rtl/oustringostreaminserter.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 )
{
......@@ -1648,6 +1669,7 @@ void FileDialogHelper_Impl::displayFolder( const ::rtl::OUString& _rPath )
try
{
mxFileDlg->setDisplayDirectory( maPath );
verifyPath();
}
catch( const IllegalArgumentException& )
{
......@@ -1665,6 +1687,7 @@ void FileDialogHelper_Impl::setFileName( const ::rtl::OUString& _rFile )
try
{
mxFileDlg->setDefaultName( maFileName );
verifyPath();
}
catch( const IllegalArgumentException& )
{
......
......@@ -152,6 +152,8 @@ namespace sfx2
void implInitializeFileName( );
void verifyPath( );
void implGetAndCacheFiles( const ::com::sun::star::uno::Reference< XInterface >& xPicker ,
std::vector<rtl::OUString>& rpURLList,
const SfxFilter* pFilter );
......
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