Added check to avoid segmentation fault
This commit is contained in:
@ -2943,32 +2943,36 @@ mbus_str_xml_encode(u_char *dst, const u_char *src, size_t max_len)
|
|||||||
i = 0;
|
i = 0;
|
||||||
len = 0;
|
len = 0;
|
||||||
|
|
||||||
while((len+6) < max_len) {
|
if (src != NULL)
|
||||||
if (src[i] == '\0')
|
{
|
||||||
|
while((len+6) < max_len)
|
||||||
{
|
{
|
||||||
break;
|
if (src[i] == '\0')
|
||||||
}
|
{
|
||||||
|
break;
|
||||||
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++;
|
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';
|
dst[len] = '\0';
|
||||||
|
Reference in New Issue
Block a user