summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeale Ranns <nranns@cisco.com>2016-12-02 15:41:03 +0000
committerDamjan Marion <dmarion.lists@gmail.com>2016-12-02 20:52:56 +0000
commit3b222a35e2f343ff70fb03db31dd866d548e32b3 (patch)
tree730a7c5390cfaa10ef9936d83b96739bb098addb
parentdf1059f057065b06287b7b94613cc11debd158f3 (diff)
Coverity errors in MPLS code
Change-Id: I3f98e3c30e29198cb8701bfb846ce194b7250ed7 Signed-off-by: Neale Ranns <nranns@cisco.com>
-rw-r--r--vnet/vnet/mpls/mpls_tunnel.c15
-rw-r--r--vpp/vpp-api/api.c3
2 files changed, 14 insertions, 4 deletions
diff --git a/vnet/vnet/mpls/mpls_tunnel.c b/vnet/vnet/mpls/mpls_tunnel.c
index 6ad11e32..8d1e30a3 100644
--- a/vnet/vnet/mpls/mpls_tunnel.c
+++ b/vnet/vnet/mpls/mpls_tunnel.c
@@ -104,7 +104,12 @@ mpls_tunnel_build_rewrite (vnet_main_t * vnm,
mti = mpls_tunnel_db[sw_if_index];
mt = pool_elt_at_index(mpls_tunnel_pool, mti);
+ /*
+ * The vector must be allocated as u8 so the length is correct
+ */
+ ASSERT(0 < vec_len(mt->mt_label_stack));
vec_validate(rewrite, (sizeof(*muh) * vec_len(mt->mt_label_stack)) - 1);
+ ASSERT(rewrite);
muh = (mpls_unicast_header_t *)rewrite;
/*
@@ -123,15 +128,19 @@ mpls_tunnel_build_rewrite (vnet_main_t * vnm,
vnet_mpls_uc_set_ttl(&muh[ii].label_exp_s_ttl, 255);
vnet_mpls_uc_set_exp(&muh[ii].label_exp_s_ttl, 0);
- if (VNET_LINK_MPLS == link_type &&
- mt->mt_label_stack[ii] != MPLS_IETF_IMPLICIT_NULL_LABEL)
+ if ((VNET_LINK_MPLS == link_type) &&
+ (mt->mt_label_stack[ii] != MPLS_IETF_IMPLICIT_NULL_LABEL))
+ {
vnet_mpls_uc_set_s(&muh[ii].label_exp_s_ttl, MPLS_NON_EOS);
+ }
else
+ {
vnet_mpls_uc_set_s(&muh[ii].label_exp_s_ttl, MPLS_EOS);
+ }
muh[ii].label_exp_s_ttl = clib_host_to_net_u32(muh[ii].label_exp_s_ttl);
- return ((u8*)muh);
+ return (rewrite);
}
/**
diff --git a/vpp/vpp-api/api.c b/vpp/vpp-api/api.c
index c110769b..b778d3ca 100644
--- a/vpp/vpp-api/api.c
+++ b/vpp/vpp-api/api.c
@@ -2149,7 +2149,8 @@ vl_api_mpls_tunnel_add_del_t_handler (vl_api_mpls_tunnel_add_del_t * mp)
}
else
{
- vnet_mpls_tunnel_del (ntohl (mp->mt_sw_if_index));
+ tunnel_sw_if_index = ntohl (mp->mt_sw_if_index);
+ vnet_mpls_tunnel_del (tunnel_sw_if_index);
}
dsunlock (sm);