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 |