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)