Added check to avoid segmentation fault

This commit is contained in:
Stefan Wahren
2012-05-06 21:55:39 +02:00
parent 42ed80a5b0
commit 6dd17954d2

View File

@ -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]) switch (src[i])
{ {
case '&': case '&':
len += snprintf(&dst[len], max_len - len, "&amp;"); len += snprintf(&dst[len], max_len - len, "&amp;");
break; break;
case '<': case '<':
len += snprintf(&dst[len], max_len - len, "&lt;"); len += snprintf(&dst[len], max_len - len, "&lt;");
break; break;
case '>': case '>':
len += snprintf(&dst[len], max_len - len, "&gt;"); len += snprintf(&dst[len], max_len - len, "&gt;");
break; break;
case '"': case '"':
len += snprintf(&dst[len], max_len - len, "&quot;"); len += snprintf(&dst[len], max_len - len, "&quot;");
break; break;
default: default:
dst[len++] = src[i]; dst[len++] = src[i];
break; break;
} }
i++; i++;
}
} }
dst[len] = '\0'; dst[len] = '\0';