summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKlement Sekera <ksekera@cisco.com>2020-06-09 14:17:45 +0000
committerDave Barach <openvpp@barachs.net>2020-06-10 11:11:07 +0000
commit35418ba491505318e0b08b372fcf1e9f0d45d80f (patch)
tree70a2abad4266eb2afb1f4bc112b43316c4f3389a
parentce53363d2018071df00ffddf2ffa13c4229139a8 (diff)
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
-rw-r--r--src/vpp-api/vapi/vapi.c4
-rw-r--r--test/ext/vapi_c_test.c12
-rw-r--r--test/ext/vapi_cpp_test.cpp8
3 files changed, 4 insertions, 20 deletions
diff --git a/src/vpp-api/vapi/vapi.c b/src/vpp-api/vapi/vapi.c
index 8a9c8e3b450..ec87e7b7b72 100644
--- a/src/vpp-api/vapi/vapi.c
+++ b/src/vpp-api/vapi/vapi.c
@@ -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;
}
diff --git a/test/ext/vapi_c_test.c b/test/ext/vapi_c_test.c
index b5075e96c10..0247933f605 100644
--- a/test/ext/vapi_c_test.c
+++ b/test/ext/vapi_c_test.c
@@ -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)))
diff --git a/test/ext/vapi_cpp_test.cpp b/test/ext/vapi_cpp_test.cpp
index 284b211eb81..ee0a9f38d3e 100644
--- a/test/ext/vapi_cpp_test.cpp
+++ b/test/ext/vapi_cpp_test.cpp
@@ -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);