Michael Kainzbauer created FOP-3036:
---------------------------------------

             Summary: InternaResourceResolver fails on schemes starting with 
"data"
                 Key: FOP-3036
                 URL: https://issues.apache.org/jira/browse/FOP-3036
             Project: FOP
          Issue Type: Bug
          Components: unqualified
    Affects Versions: 2.6
            Reporter: Michael Kainzbauer


org.apache.fop.apps.io.InternalResourceResolver seems to check for "DataURIs" 
in a wrong way:

 

{{public Resource getResource(String stringUri) throws IOException, 
URISyntaxException {}}
{{return 
*{color:#FF0000}s{color}{color:#FF0000}tringUri.startsWith("data:"){color}* ? 
new Resource(this.resolveDataURI(stringUri)) : 
this.{color:#57d9a3}getResource{color}(cleanURI(stringUri));}}
{{}}}

{{public Resource {color:#57d9a3}getResource{color}(URI uri) throws IOException 
{}}
{{return uri.getScheme() != null && 
*{color:#FF0000}uri.getScheme().startsWith("data"){color}* ? new 
Resource(this.resolveDataURI(uri.toASCIIString())) : 
this.resourceResolver.getResource(this.resolveFromBase(uri));}}
{{}}}

The first check in Method {{{}public Resource getResource(String 
stringUri){}}}, if the stringUri starts with "data:" is correct: any URIs with, 
an only with, the scheme "data" will be resolved with the resolveDataURI method.

Example:
 * resolving an URI with scheme "data" will be resolved with the resolveDataURI 
method
 * resolving an URI with scheme "datamatrix" will be delegated to {{public 
Resource {color:#57d9a3}getResource{color}(URI uri) method.}}
 * resolving an URI with scheme "foo" will be delegated to {{public Resource 
{color:#57d9a3}getResource{color}(URI uri) method.}}

 

The second check in {{{}public Resource {color:#57d9a3}getResource{color}(URI 
uri){}}}, if the scheme starts with data is wrong: any URIs with a scheme 
starting with"data" will be resolved with the resolveDataURI method.

Example:
 * resolving an URI with scheme "data" will be resolved with the resolveDataURI 
method
 * {{resolving an URI with scheme "datamatrix"  will be resolved with the 
resolveDataURI method, which is wrong, should be handled by 
this.resourceResolver.getResource(this.resolveFromBase(uri)}}
 * {{resolving an URI with scheme "foo" will be handled by 
this.resourceResolver.getResource(this.resolveFromBase(uri)}}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to