[PATCH] Fix for Bug 43895: Never let users save in /tmp by default

Stephan Bergmann sbergman at redhat.com
Mon Mar 26 07:48:10 PDT 2012


Just looking at the below function itself (so no idea about the larger 
context), I noted a few things:

On 03/19/2012 01:17 AM, Andrzej J. R. Hunt wrote:
> +void FileDialogHelper_Impl::verifyPath()
> +{
> +    struct stat aFileStat;
> +    const char* pFullPath = OUStringToOString( ( maPath.copy(7) + maFileName ),

copy(7) could be replaced with copy(RTL_CONSTASCII_LENGTH("file://")) to 
make it more obvious what's going on.

> +            osl_getThreadTextEncoding() ).getStr();

pFullPath points to delete memory now, as the OString temporary goes out 
of scope at the end of the statement.

> +    stat( pFullPath,&aFileStat );

See osl/file.hxx for LO's cross-platform stat abstraction facilities -- 
if they are not expressive enough for the problem at hand, this code 
would need to be properly ifdef'ed for POSIX (explicitly checking for 
/tmp indicates this is only a Unix-style problem and/or solution, anyway).

> +    // 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.compareTo("file:///tmp",11) == 0&&
> +            ( aFileStat.st_mode&  (S_IRWXO + S_IRWXG + S_IRWXU) ) == S_IRUSR ) {
> +        maPath = SvtPathOptions().GetWorkPath();
> +        mxFileDlg->setDisplayDirectory( maPath );
> +    }
> +}

Sorry that this is just non-constructive drive-by comments for now...

Stephan


More information about the LibreOffice mailing list