convert all control chars into spaces to be xml 1.0 conform

This commit is contained in:
Stefan Wahren 2012-09-16 18:15:55 +02:00
parent 564483e092
commit 1ae8869d7b

View File

@ -9,6 +9,7 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
#include <assert.h> #include <assert.h>
#include <ctype.h>
#include <math.h> #include <math.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
@ -3227,23 +3228,31 @@ mbus_str_xml_encode(u_char *dst, const u_char *src, size_t max_len)
break; break;
} }
switch (src[i]) if (iscntrl(src[i]))
{ {
case '&': // convert all control chars into spaces
len += snprintf(&dst[len], max_len - len, "&amp;"); dst[len++] = ' ';
break; }
case '<': else
len += snprintf(&dst[len], max_len - len, "&lt;"); {
break; switch (src[i])
case '>': {
len += snprintf(&dst[len], max_len - len, "&gt;"); case '&':
break; len += snprintf(&dst[len], max_len - len, "&amp;");
case '"': break;
len += snprintf(&dst[len], max_len - len, "&quot;"); case '<':
break; len += snprintf(&dst[len], max_len - len, "&lt;");
default: break;
dst[len++] = src[i]; case '>':
break; len += snprintf(&dst[len], max_len - len, "&gt;");
break;
case '"':
len += snprintf(&dst[len], max_len - len, "&quot;");
break;
default:
dst[len++] = src[i];
break;
}
} }
i++; i++;