[ https://issues.apache.org/jira/browse/XGC-137?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17760876#comment-17760876 ]
Simon Steiner commented on XGC-137: ----------------------------------- What about using RestrictedIO settings: confBuilder = new FopConfParser(new FileInputStream(conf), EnvironmentalProfileFactory.createRestrictedIO(conf.getParentFile().toURI(), rr)).getFopFactoryBuilder(); > FOP Default font cache file mishandled when user has no home directory > ---------------------------------------------------------------------- > > Key: XGC-137 > URL: https://issues.apache.org/jira/browse/XGC-137 > Project: XMLGraphicsCommons > Issue Type: Bug > Components: general > Affects Versions: 2.8, 2.9, main > Environment: Ubuntu 22.04 > Reporter: Paul Robinson > Priority: Minor > > FontCache.getDefaultCacheFile(boolean forWriting) tries to choose and (if > necessary) create a .fop directory. It checks to make sure that is writable, > and if not, users a temporary directory instead. Finally, it then returns a > File pointing inside the .fop directory. > This all works, but only when FontCache.getUserHome() returns non-null. > getUserHome() returns null if a user is configured with a non-existent home > directory (which just happens to be the default when installing Apache Tomcat > 9 on Ubuntu, where the home directory is /var/lib/tomcat but it doesn't > exist, whereas /var/lib/tomcat9 does). > In this case, it simply returns a new file called ".fop". This means the > default cache file will be called ".fop" in the current working directory. > This avoids the check to see whether the directory is writable, and it uses a > file called .fop instead of a directory called .fop. > If (as can be the case in Tomcat) the current working directory is not > writable, then the default cache file cannot be written to leading to an > exception. > I think this can be fixed with simple change from this: > {code:java} > File userHome = getUserHome(); > if (userHome != null) { > File fopUserDir = new File(userHome, FOP_USER_DIR); > {code} > to this: > {code:java} > File userHome = getUserHome(); > File fopUserDir = userHome == null ? new File(FOP_USER_DIR) : new > File(userHome, FOP_USER_DIR); > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: general-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: general-h...@xmlgraphics.apache.org