Julian Müller created FOP-3193:
----------------------------------

             Summary: Font auto-detection crashes on systems with internally 
recursive font directories
                 Key: FOP-3193
                 URL: https://issues.apache.org/jira/browse/FOP-3193
             Project: FOP
          Issue Type: Bug
    Affects Versions: 2.9
            Reporter: Julian Müller


A user reported to us that our application crashes when exporting to PDF. We 
traced it down to the fact that FOP's FontFileFinder was infinitely recursing 
over font directories on that user's system, i.e., a font directory on this 
user's system contained itself.

This potential infinite recursion is currently hardcoded in 
FontDetectorFactory.DefaultFontFactory.detect():

{code:java}
// search in font base if it is defined and
// is a directory but don't recurse
FontFileFinder fontFileFinder = new FontFileFinder(eventListener);
[...]
List<URL> systemFontList;
systemFontList = fontFileFinder.find();
{code}
Note that the leading comment at the top is not true: The font file finder 
potentially recurses to an arbitrary depth when this constructor is called.

I think FOP should set a reasonable limit on the recursion depth when 
auto-detecting fonts to avoid crashing on systems with recursive directory 
structures, or it might even be preferable to make the maximum recursion depth 
in the font auto-detect feature configurable for users of FOP. As things stand, 
it is hard to defend against this issue because FOP makes it difficult to avoid 
the infinite recursion when the font auto-detection feature is enabled (e.g., 
PDFTranscoder hardcodes the usage of PDFDocumentGraphics2DConfigurator, which 
hardcodes the usage of the default font detector, which hardcodes the infinite 
recursion).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to