https://issues.apache.org/bugzilla/show_bug.cgi?id=46686

           Summary: FontCache.getDefaultCacheFile() method returns a non-
                    existant file handle
           Product: Fop
           Version: all
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Keywords: PatchAvailable
          Severity: normal
          Priority: P2
         Component: fonts
        AssignedTo: fop-dev@xmlgraphics.apache.org
        ReportedBy: a...@jivesoftware.com
                CC: a...@jivesoftware.com


Created an attachment (id=23243)
 --> (https://issues.apache.org/bugzilla/attachment.cgi?id=23243)
Patch to FontCache to use a fallback if the user directory is not writable

Method getDefaultCacheFile() returns an invalid file handle because it doesn't
check to see if the directory is writable.
{code}

private static File getUserHome() {
        String s = System.getProperty("user.home");
        if (s != null) {
            File userDir = new File(s);
            if (userDir.exists()) {
                return userDir;
            }
        }
        return null;
    }


/**
     * Returns the default font cache file.
     * @param forWriting true if the user directory should be created
     * @return the default font cache file
     */
    public static File getDefaultCacheFile(boolean forWriting) {
        File userHome = getUserHome();
        if (userHome != null) {
            File fopUserDir = new File(userHome, FOP_USER_DIR);
            if (forWriting) {
                fopUserDir.mkdir();
            }
            return new File(fopUserDir, DEFAULT_CACHE_FILENAME);
        }
        return new File(FOP_USER_DIR);

}
{code}
The method getUserHome() can return a directory that is not a writable
directory. In most cases, the user who is running the webserver has access to
user.home, but some in some environments, it is possible that user.home is not
writable. Anyway, a simple way to fix it would be to fall back to a the
java.io.tmpdir if the userHome is not writable. See attached patch that has
that fix


-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

Reply via email to