diff options
author | 2020-04-08 08:14:57 -0400 | |
---|---|---|
committer | 2020-04-08 16:29:44 +0000 | |
commit | 954c707972bf7efcd227e26d9679544813a78115 (patch) | |
tree | 99e3ff617ceaef9c94f5cb33176ac14d248a316b /src/plugins/ioam/encap/ip6_ioam_trace.c | |
parent | 8d0d8d2fcccd77e462f30b21f7f8810db312ee62 (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/encap/ip6_ioam_trace.c')
-rw-r--r-- | src/plugins/ioam/encap/ip6_ioam_trace.c | 8 |
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; |