|
From: Chris B. <buc...@us...> - 2013-05-17 22:38:18
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "sfcb - Small Footprint CIM Broker".
The branch, master has been updated
via 4e1dbba6434044df5198a60277efea3505a6912d (commit)
from 9255afd068bda71a33b432e3bdff992e85cc2afd (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 4e1dbba6434044df5198a60277efea3505a6912d
Author: buccella <buc...@li...>
Date: Fri May 17 18:38:22 2013 -0400
[sfcb-tix:#44] Escape XML for Embedded Instances Instead of Using CDATA
-----------------------------------------------------------------------
Summary of changes:
cimXmlGen.c | 32 ++++++++++++++++----
contributions.txt | 1 +
.../tests/Test1EnumerateInstances.lines | 26 ++++++----------
3 files changed, 37 insertions(+), 22 deletions(-)
diff --git a/cimXmlGen.c b/cimXmlGen.c
index fd3e32d..7c67652 100644
--- a/cimXmlGen.c
+++ b/cimXmlGen.c
@@ -59,6 +59,24 @@ const char *opGetClassNameChars(CMPIObjectPath * cop);
data2xml((data),(name),(refname),(btag),sizeof(btag)-1,(etag), \
sizeof(etag)-1,(sb),(qsb),(inst),(param))
+static int add_escaped_instance(UtilStringBuffer *sb, CMPIInstance *inst)
+{
+ UtilStringBuffer *instance;
+
+ _SFCB_ENTER(TRACE_CIMXMLPROC, "add_escaped_instance");
+
+ instance = UtilFactory->newStrinBuffer(1024);
+ if (!instance)
+ _SFCB_RETURN(1);
+
+ instance2xml(inst, instance, 0);
+ char *escaped = XMLEscape((char *) instance->ft->getCharPtr(instance), NULL);
+ sb->ft->appendChars(sb, escaped);
+ free(escaped);
+ instance->ft->release(instance);
+ _SFCB_RETURN(0);
+}
+
char *
XMLEscape(char *in, int *outlen)
{
@@ -586,9 +604,10 @@ value2xml(CMPIData d, UtilStringBuffer * sb, int wv)
splen = 0;
}
} else if (d.type == CMPI_instance) {
- SFCB_APPENDCHARS_BLOCK(sb, "<![CDATA[");
- instance2xml(d.value.inst, sb, 0);
- SFCB_APPENDCHARS_BLOCK(sb, "]]>");
+ // SFCB_APPENDCHARS_BLOCK(sb, "<![CDATA[");
+ // instance2xml(d.value.inst, sb, 0);
+ // SFCB_APPENDCHARS_BLOCK(sb, "]]>");
+ add_escaped_instance(sb, d.value.inst);
splen = 0;
} else {
mlogf(M_ERROR, M_SHOW, "%s(%d): invalid value2xml %d-%x\n", __FILE__,
@@ -805,9 +824,10 @@ data2xml(CMPIData *data, CMPIString *name,
SFCB_APPENDCHARS_BLOCK(sb, "\" TYPE=\"string\">\n");
if (data->value.inst) {
SFCB_APPENDCHARS_BLOCK(sb, "<VALUE>");
- SFCB_APPENDCHARS_BLOCK(sb, "<![CDATA[");
- instance2xml(data->value.inst, sb, 0);
- SFCB_APPENDCHARS_BLOCK(sb, "]]>");
+ // SFCB_APPENDCHARS_BLOCK(sb, "<![CDATA[");
+ // instance2xml(data->value.inst, sb, 0);
+ // SFCB_APPENDCHARS_BLOCK(sb, "]]>");
+ add_escaped_instance(sb, data->value.inst);
SFCB_APPENDCHARS_BLOCK(sb, "</VALUE>\n");
}
}
diff --git a/contributions.txt b/contributions.txt
index ad0d74d..b1dbb65 100644
--- a/contributions.txt
+++ b/contributions.txt
@@ -225,3 +225,4 @@ Shreyas Deodhar, QLogic
Jan Safranek, Red Hat
---------------------
05/16/2013 [sfcb-tix:#37] indCIMXmlHandler coredumps in IndCIMXMLHandlerInvokeMethod with Embedded Instances
+05/17/2013 [sfcb-tix:#44] Escape XML for Embedded Instances Instead of Using CDATA
diff --git a/test/TestProviders/tests/Test1EnumerateInstances.lines b/test/TestProviders/tests/Test1EnumerateInstances.lines
index dd8dd25..19b725f 100644
--- a/test/TestProviders/tests/Test1EnumerateInstances.lines
+++ b/test/TestProviders/tests/Test1EnumerateInstances.lines
@@ -5,27 +5,21 @@
<PROPERTY NAME="Identifier" TYPE="uint8">
<VALUE>1</VALUE>
<PROPERTY NAME="Einst" EmbeddedObject="object" TYPE="string">
-[CDATA[
-<PROPERTY NAME="Identifier" TYPE="uint8">
-<VALUE>1</VALUE>
-<PROPERTY NAME="Einst" EmbeddedObject="object" TYPE="string">
-<PROPERTY NAME="Message" TYPE="string">
-<VALUE>I'm an EmbeddedObject</VALUE>
+<VALUE><INSTANCE CLASSNAME="Sample_Instance">
+<PROPERTY NAME="Identifier" TYPE="uint8">
+<VALUE>1</VALUE>
+</PROPERTY>
+<PROPERTY NAME="Einst" EmbeddedObject="object" TYPE="string">
+</PROPERTY>
+<PROPERTY NAME="Message" TYPE="string">
+<VALUE>I&apos;m an EmbeddedObject</VALUE>
+</PROPERTY>
+</INSTANCE>
<PROPERTY NAME="Message" TYPE="string">
<VALUE>Hello World</VALUE>
-<INSTANCENAME CLASSNAME="Sample_Instance">
-<KEYBINDING NAME="Identifier">
<KEYVALUE VALUETYPE="numeric">2</KEYVALUE>
-<INSTANCE CLASSNAME="Sample_Instance">
-<PROPERTY NAME="Identifier" TYPE="uint8">
<VALUE>2</VALUE>
-<PROPERTY NAME="Einst" EmbeddedObject="object" TYPE="string">
-<PROPERTY NAME="Message" TYPE="string">
<VALUE>Yo Planet</VALUE>
<KEYVALUE VALUETYPE="numeric">3</KEYVALUE>
-<INSTANCE CLASSNAME="Sample_Instance">
-<PROPERTY NAME="Identifier" TYPE="uint8">
<VALUE>3</VALUE>
-<PROPERTY NAME="Einst" EmbeddedObject="object" TYPE="string">
-<PROPERTY NAME="Message" TYPE="string">
<VALUE>Hey Earth</VALUE>
hooks/post-receive
--
sfcb - Small Footprint CIM Broker
|