sblim-sfcb/sblim-sfcb-1.3.16-escape.patch

50 lines
1.8 KiB
Diff

diff -up sblim-sfcb-1.3.16/cimXmlGen.c.escape sblim-sfcb-1.3.16/cimXmlGen.c
--- sblim-sfcb-1.3.16/cimXmlGen.c.escape 2013-04-29 14:29:14.084335007 +0200
+++ sblim-sfcb-1.3.16/cimXmlGen.c 2013-04-29 14:28:44.000000000 +0200
@@ -70,6 +70,23 @@ const char *opGetClassNameChars(CMPIObje
data2xml((data),(obj),(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)
{
@@ -542,9 +559,7 @@ int value2xml(CMPIData d, UtilStringBuff
}
}
else if(d.type == CMPI_instance) {
- 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 {
@@ -754,9 +769,7 @@ void data2xml(CMPIData * data, void *obj
else 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, "]]>");
+ add_escaped_instance(sb, data->value.inst);
SFCB_APPENDCHARS_BLOCK(sb, "</VALUE>\n");
}
}