You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@manifoldcf.apache.org by "Raman Gupta (JIRA)" <ji...@apache.org> on 2019/04/26 04:01:00 UTC
[jira] [Updated] (CONNECTORS-1603) Global config XML double-decoded
when stored in Zookeeper
[ https://issues.apache.org/jira/browse/CONNECTORS-1603?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Raman Gupta updated CONNECTORS-1603:
------------------------------------
Description:
When using Zookeeper to store the global config, it is impossible to have entities in the input XML. For example if we have a db password with value "foo&bar", then we have to encode this in the global config XML like this:
<property name="org.apache.manifoldcf.dbsuperuserpassword" value="foo&bar"/>
When writing the global config to Zookeeper, it appears like this XML file is parsed, but then written to ZooKeeper as:
<property name="org.apache.manifoldcf.dbsuperuserpassword" value="foo&bar"/>
Now, when this global config is read from ZooKeeper, Manifold parses it as XML again, and of course fails with the error:
{{Caused by: org.xml.sax.SAXParseException; lineNumber: 31; columnNumber: 81; The reference to entity "bar" must end with the ';' delimiter.
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:122)
at org.apache.manifoldcf.core.common.XMLDoc.init(XMLDoc.java:359)
... 9 more
}}
was:
When using Zookeeper to store the global config, it is impossible to have entities in the input XML. For example if we have a db password with value "foo&bar", then we have to encode this in the global config XML like this:
<property name="org.apache.manifoldcf.dbsuperuserpassword" value="foo&bar"/>
When writing the global config to Zookeeper, it appears like this XML file is parsed, but then written to ZooKeeper as:
<property name="org.apache.manifoldcf.dbsuperuserpassword" value="foo&bar"/>
Now, when this global config is read from ZooKeeper, Manifold parses it as XML again, and of course fails with the error:
Caused by: org.xml.sax.SAXParseException; lineNumber: 31; columnNumber: 81; The reference to entity "bar" must end with the ';' delimiter.
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:122)
at org.apache.manifoldcf.core.common.XMLDoc.init(XMLDoc.java:359)
... 9 more
> Global config XML double-decoded when stored in Zookeeper
> ---------------------------------------------------------
>
> Key: CONNECTORS-1603
> URL: https://issues.apache.org/jira/browse/CONNECTORS-1603
> Project: ManifoldCF
> Issue Type: Bug
> Reporter: Raman Gupta
> Priority: Major
>
> When using Zookeeper to store the global config, it is impossible to have entities in the input XML. For example if we have a db password with value "foo&bar", then we have to encode this in the global config XML like this:
> <property name="org.apache.manifoldcf.dbsuperuserpassword" value="foo&bar"/>
> When writing the global config to Zookeeper, it appears like this XML file is parsed, but then written to ZooKeeper as:
> <property name="org.apache.manifoldcf.dbsuperuserpassword" value="foo&bar"/>
> Now, when this global config is read from ZooKeeper, Manifold parses it as XML again, and of course fails with the error:
> {{Caused by: org.xml.sax.SAXParseException; lineNumber: 31; columnNumber: 81; The reference to entity "bar" must end with the ';' delimiter.
> at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
> at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
> at java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:122)
> at org.apache.manifoldcf.core.common.XMLDoc.init(XMLDoc.java:359)
> ... 9 more
> }}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)