vapi: memset allocated messages to zero

This avoids using dirty data from shared memory by client.

Type: fix
Signed-off-by: Klement Sekera <ksekera@cisco.com>
Change-Id: I96eecf655bf344ec29609cedbd8dc891b572e207
This commit is contained in:
Klement Sekera
2020-06-09 14:17:45 +00:00
committed by Dave Barach
parent ce53363d20
commit 35418ba491
3 changed files with 4 additions and 20 deletions

View File

@ -221,6 +221,10 @@ vapi_msg_alloc (vapi_ctx_t ctx, size_t size)
return NULL;
}
void *rv = vl_msg_api_alloc_or_null (size);
if (rv)
{
clib_memset (rv, 0, size);
}
return rv;
}

View File

@ -526,9 +526,6 @@ START_TEST (test_loopbacks_1)
dctx.last_called = false;
clib_memset (&seen, 0, sizeof (seen));
dump = vapi_alloc_sw_interface_dump (ctx);
dump->payload.name_filter_valid = 0;
clib_memset (dump->payload.name_filter.buf, 0,
dump->payload.name_filter.length);
while (VAPI_EAGAIN ==
(rv =
vapi_sw_interface_dump (ctx, dump, sw_interface_dump_cb,
@ -558,9 +555,6 @@ START_TEST (test_loopbacks_1)
dctx.last_called = false;
clib_memset (&seen, 0, sizeof (seen));
dump = vapi_alloc_sw_interface_dump (ctx);
dump->payload.name_filter_valid = 0;
clib_memset (dump->payload.name_filter.buf, 0,
dump->payload.name_filter.length);
while (VAPI_EAGAIN ==
(rv =
vapi_sw_interface_dump (ctx, dump, sw_interface_dump_cb, &dctx)))
@ -683,9 +677,6 @@ START_TEST (test_loopbacks_2)
clib_memset (&seen, 0, sizeof (seen));
sw_interface_dump_ctx dctx = { false, num_ifs, sw_if_indexes, seen, 0 };
vapi_msg_sw_interface_dump *dump = vapi_alloc_sw_interface_dump (ctx);
dump->payload.name_filter_valid = 0;
clib_memset (dump->payload.name_filter.buf, 0,
dump->payload.name_filter.length);
while (VAPI_EAGAIN ==
(rv =
vapi_sw_interface_dump (ctx, dump, sw_interface_dump_cb, &dctx)))
@ -724,9 +715,6 @@ START_TEST (test_loopbacks_2)
clib_memset (&seen, 0, sizeof (seen));
dctx.last_called = false;
dump = vapi_alloc_sw_interface_dump (ctx);
dump->payload.name_filter_valid = 0;
clib_memset (dump->payload.name_filter.buf, 0,
dump->payload.name_filter.length);
while (VAPI_EAGAIN ==
(rv =
vapi_sw_interface_dump (ctx, dump, sw_interface_dump_cb, &dctx)))

View File

@ -147,8 +147,6 @@ START_TEST (test_loopbacks_1)
bool seen[num_ifs] = {0};
Sw_interface_dump d (con);
auto &p = d.get_request ().get_payload ();
p.name_filter_valid = 0;
memset (p.name_filter.buf, 0, p.name_filter.length);
auto rv = d.execute ();
ck_assert_int_eq (VAPI_OK, rv);
WAIT_FOR_RESPONSE (d, rv);
@ -189,8 +187,6 @@ START_TEST (test_loopbacks_1)
{ // new context
Sw_interface_dump d (con);
auto &p = d.get_request ().get_payload ();
p.name_filter_valid = 0;
memset (p.name_filter.buf, 0, p.name_filter.length);
auto rv = d.execute ();
ck_assert_int_eq (VAPI_OK, rv);
WAIT_FOR_RESPONSE (d, rv);
@ -307,8 +303,6 @@ START_TEST (test_loopbacks_2)
Sw_interface_dump_cb<num_ifs> swdcb (ccbs);
Sw_interface_dump d (con, std::ref (swdcb));
auto &p = d.get_request ().get_payload ();
p.name_filter_valid = 0;
memset (p.name_filter.buf, 0, p.name_filter.length);
auto rv = d.execute ();
ck_assert_int_eq (VAPI_OK, rv);
WAIT_FOR_RESPONSE (d, rv);
@ -336,8 +330,6 @@ START_TEST (test_loopbacks_2)
{ // new context
Sw_interface_dump d (con);
auto &p = d.get_request ().get_payload ();
p.name_filter_valid = 0;
memset (p.name_filter.buf, 0, p.name_filter.length);
auto rv = d.execute ();
ck_assert_int_eq (VAPI_OK, rv);
WAIT_FOR_RESPONSE (d, rv);