summaryrefslogtreecommitdiffstats
path: root/src/plugins/ioam
diff options
context:
space:
mode:
authorDave Barach <dave@barachs.net>2020-04-08 08:14:57 -0400
committerFlorin Coras <florin.coras@gmail.com>2020-04-08 16:29:44 +0000
commit954c707972bf7efcd227e26d9679544813a78115 (patch)
tree99e3ff617ceaef9c94f5cb33176ac14d248a316b /src/plugins/ioam
parent8d0d8d2fcccd77e462f30b21f7f8810db312ee62 (diff)
misc: check return values from vlib_buffer_copy(...)
vlib_buffer_copy(...) returns NULL if the system is temporarily out of buffers. This is NOT correct. Please don't be this person: c0 = vlib_buffer_copy (vm, p0); ci0 = vlib_get_buffer_index (vm, c0); Type: fix Signed-off-by: Dave Barach <dave@barachs.net> Change-Id: Ic25ef58965871ea5d2b40904df9506803f69e47e
Diffstat (limited to 'src/plugins/ioam')
-rw-r--r--src/plugins/ioam/encap/ip6_ioam_trace.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/plugins/ioam/encap/ip6_ioam_trace.c b/src/plugins/ioam/encap/ip6_ioam_trace.c
index 53fb63ea6fd..23448575798 100644
--- a/src/plugins/ioam/encap/ip6_ioam_trace.c
+++ b/src/plugins/ioam/encap/ip6_ioam_trace.c
@@ -222,14 +222,16 @@ ip6_hbh_ioam_loopback_handler (vlib_buffer_t * b, ip6_header_t * ip,
ioam_trace_option_t *opt;
udp_ping_t *udp;
+ b0 = vlib_buffer_copy (hm->vlib_main, b);
+ if (b0 == NULL)
+ return;
+
+ buf_index = vlib_get_buffer_index (hm->vlib_main, b0);
next_node = vlib_get_node_by_name (hm->vlib_main, (u8 *) "ip6-lookup");
nf = vlib_get_frame_to_node (hm->vlib_main, next_node->index);
nf->n_vectors = 0;
to_next = vlib_frame_vector_args (nf);
- b0 = vlib_buffer_copy (hm->vlib_main, b);
- buf_index = vlib_get_buffer_index (hm->vlib_main, b0);
-
vnet_buffer (b0)->sw_if_index[VLIB_RX] = 0;
vnet_buffer (b0)->sw_if_index[VLIB_TX] = ~0;