imv-scanner: Properly check snprintf() return value
This commit is contained in:
@@ -332,7 +332,8 @@ METHOD(imv_agent_if_t, batch_ending, TNC_Result,
|
|||||||
u_int16_t port;
|
u_int16_t port;
|
||||||
bool closed_port_policy, blocked, first;
|
bool closed_port_policy, blocked, first;
|
||||||
char result_str[BUF_LEN], *pos, *protocol_str;
|
char result_str[BUF_LEN], *pos, *protocol_str;
|
||||||
size_t len, written;
|
size_t len;
|
||||||
|
int written;
|
||||||
linked_list_t *port_list;
|
linked_list_t *port_list;
|
||||||
enumerator_t *e1, *e2;
|
enumerator_t *e1, *e2;
|
||||||
|
|
||||||
@@ -410,12 +411,15 @@ METHOD(imv_agent_if_t, batch_ending, TNC_Result,
|
|||||||
{
|
{
|
||||||
written = snprintf(pos, len, "violating %s ports:",
|
written = snprintf(pos, len, "violating %s ports:",
|
||||||
protocol_str);
|
protocol_str);
|
||||||
pos += written;
|
if (written > 0 && written < len)
|
||||||
len -= written;
|
{
|
||||||
|
pos += written;
|
||||||
|
len -= written;
|
||||||
|
}
|
||||||
first = FALSE;
|
first = FALSE;
|
||||||
}
|
}
|
||||||
written = snprintf(pos, len, " %u", port);
|
written = snprintf(pos, len, " %u", port);
|
||||||
if (written > len || written < 0)
|
if (written < 0 || written >= len)
|
||||||
{
|
{
|
||||||
pos += len - 1;
|
pos += len - 1;
|
||||||
*pos = '\0';
|
*pos = '\0';
|
||||||
|
|||||||
Reference in New Issue
Block a user