Let mbus_str_xml_encode return a resultcode
This commit is contained in:
@ -3654,7 +3654,7 @@ mbus_data_error_print(int error)
|
||||
/// Encode string to XML
|
||||
///
|
||||
//------------------------------------------------------------------------------
|
||||
void
|
||||
int
|
||||
mbus_str_xml_encode(unsigned char *dst, const unsigned char *src, size_t max_len)
|
||||
{
|
||||
size_t i, len;
|
||||
@ -3663,49 +3663,55 @@ mbus_str_xml_encode(unsigned char *dst, const unsigned char *src, size_t max_len
|
||||
len = 0;
|
||||
|
||||
if (dst == NULL)
|
||||
return;
|
||||
|
||||
if (src != NULL)
|
||||
{
|
||||
while((len+6) < max_len)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (src == NULL)
|
||||
{
|
||||
dst[len] = '\0';
|
||||
return -2;
|
||||
}
|
||||
|
||||
while((len+6) < max_len)
|
||||
{
|
||||
if (src[i] == '\0')
|
||||
{
|
||||
if (src[i] == '\0')
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (iscntrl(src[i]))
|
||||
{
|
||||
// convert all control chars into spaces
|
||||
dst[len++] = ' ';
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (src[i])
|
||||
{
|
||||
case '&':
|
||||
len += snprintf(&dst[len], max_len - len, "&");
|
||||
break;
|
||||
case '<':
|
||||
len += snprintf(&dst[len], max_len - len, "<");
|
||||
break;
|
||||
case '>':
|
||||
len += snprintf(&dst[len], max_len - len, ">");
|
||||
break;
|
||||
case '"':
|
||||
len += snprintf(&dst[len], max_len - len, """);
|
||||
break;
|
||||
default:
|
||||
dst[len++] = src[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
i++;
|
||||
break;
|
||||
}
|
||||
|
||||
if (iscntrl(src[i]))
|
||||
{
|
||||
// convert all control chars into spaces
|
||||
dst[len++] = ' ';
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (src[i])
|
||||
{
|
||||
case '&':
|
||||
len += snprintf(&dst[len], max_len - len, "&");
|
||||
break;
|
||||
case '<':
|
||||
len += snprintf(&dst[len], max_len - len, "<");
|
||||
break;
|
||||
case '>':
|
||||
len += snprintf(&dst[len], max_len - len, ">");
|
||||
break;
|
||||
case '"':
|
||||
len += snprintf(&dst[len], max_len - len, """);
|
||||
break;
|
||||
default:
|
||||
dst[len++] = src[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
dst[len] = '\0';
|
||||
return 0;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user