aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Luke <chrisy@flirble.org>2018-03-29 12:56:58 -0700
committerChris Luke <chrisy@flirble.org>2018-03-29 15:23:56 -0700
commit30684ac044bbb8e11ef100a24c01eb37ba7a8876 (patch)
treeac5d526793fbafed606355c22d8e627e66d95786
parentf3a3bad8006afb0b379761dfe4d5d25de07b32cc (diff)
Coverity fixes (VPP-1204)
Minor bug fixes CID 183000: double close CID 180996: dead code CID 180995: NULL deref CID 181957: NULL deref CID 182676: NULL deref CID 182675: NULL deref Change-Id: Id35e391c95fafb8cd771984ee8a1a6e597056d37 Signed-off-by: Chris Luke <chrisy@flirble.org>
-rw-r--r--src/vlib/linux/pci.c3
-rw-r--r--src/vnet/ip/ip4_reassembly.c2
-rw-r--r--src/vnet/ip/ip6_reassembly.c2
-rw-r--r--src/vnet/ip/ip_api.c1
-rwxr-xr-xsrc/vnet/srmpls/sr_mpls_policy.c4
-rwxr-xr-xsrc/vnet/srmpls/sr_mpls_steering.c18
6 files changed, 17 insertions, 13 deletions
diff --git a/src/vlib/linux/pci.c b/src/vlib/linux/pci.c
index 127d2ef167a..11480ca081c 100644
--- a/src/vlib/linux/pci.c
+++ b/src/vlib/linux/pci.c
@@ -919,8 +919,9 @@ error:
{
if (p->fd != -1)
close (p->fd);
- if (p->config_fd != -1)
+ if (p->config_fd != -1 && p->config_fd != p->fd)
close (p->config_fd);
+ p->config_fd = p->fd = -1;
}
return err;
}
diff --git a/src/vnet/ip/ip4_reassembly.c b/src/vnet/ip/ip4_reassembly.c
index 114d8e052f8..b94a25819b7 100644
--- a/src/vnet/ip/ip4_reassembly.c
+++ b/src/vnet/ip/ip4_reassembly.c
@@ -497,6 +497,8 @@ ip4_reass_finalize (vlib_main_t * vm, vlib_node_runtime_t * node,
reass.next_range_bi;
}
while (~0 != sub_chain_bi);
+
+ ASSERT (last_b != NULL);
last_b->flags &= ~VLIB_BUFFER_NEXT_PRESENT;
ASSERT (rt->buffers_n >= (buf_cnt - dropped_cnt));
rt->buffers_n -= buf_cnt - dropped_cnt;
diff --git a/src/vnet/ip/ip6_reassembly.c b/src/vnet/ip/ip6_reassembly.c
index c6424a7309c..1be5b5ef546 100644
--- a/src/vnet/ip/ip6_reassembly.c
+++ b/src/vnet/ip/ip6_reassembly.c
@@ -534,6 +534,8 @@ ip6_reass_finalize (vlib_main_t * vm, vlib_node_runtime_t * node,
reass.next_range_bi;
}
while (~0 != sub_chain_bi);
+
+ ASSERT (last_b != NULL);
last_b->flags &= ~VLIB_BUFFER_NEXT_PRESENT;
vlib_buffer_t *first_b = vlib_get_buffer (vm, reass->first_bi);
ASSERT (total_length >= first_b->current_length);
diff --git a/src/vnet/ip/ip_api.c b/src/vnet/ip/ip_api.c
index a8dbb3ae36c..0b0a7a949e0 100644
--- a/src/vnet/ip/ip_api.c
+++ b/src/vnet/ip/ip_api.c
@@ -2253,6 +2253,7 @@ wc_arp_process (vlib_main_t * vm, vlib_node_runtime_t * rt, vlib_frame_t * f)
({
vl_api_registration_t *vl_reg;
vl_reg = vl_api_client_index_to_registration (reg->client_index);
+ ASSERT (vl_reg != NULL);
if (reg && vl_api_can_send_msg (vl_reg))
{
vl_api_ip4_arp_event_t * event = vl_msg_api_alloc (sizeof *event);
diff --git a/src/vnet/srmpls/sr_mpls_policy.c b/src/vnet/srmpls/sr_mpls_policy.c
index 4a563248ce0..7d336c17594 100755
--- a/src/vnet/srmpls/sr_mpls_policy.c
+++ b/src/vnet/srmpls/sr_mpls_policy.c
@@ -661,6 +661,10 @@ sr_mpls_policy_assign_endpoint_color (mpls_label_t bsid,
old_value =
mhash_get ((mhash_t *) endpoint_table, &sr_policy->endpoint);
+ /* CID 180995 This should never be NULL unless the two hash tables
+ * get out of sync */
+ ASSERT (old_value != NULL);
+
fib_prefix_t pfx = { 0 };
pfx.fp_proto = FIB_PROTOCOL_MPLS;
pfx.fp_len = 21;
diff --git a/src/vnet/srmpls/sr_mpls_steering.c b/src/vnet/srmpls/sr_mpls_steering.c
index 8bb072c8812..c5ddab73ce4 100755
--- a/src/vnet/srmpls/sr_mpls_steering.c
+++ b/src/vnet/srmpls/sr_mpls_steering.c
@@ -393,22 +393,16 @@ sr_mpls_steering_policy_add (mpls_label_t bsid, u32 table_id,
memset (&key, 0, sizeof (sr_mpls_steering_key_t));
- /* Compute the steer policy key */
- if (traffic_type == SR_STEER_IPV4 || traffic_type == SR_STEER_IPV6)
- {
- key.prefix.as_u64[0] = prefix->as_u64[0];
- key.prefix.as_u64[1] = prefix->as_u64[1];
- key.mask_width = mask_width;
- key.fib_table = (table_id != (u32) ~ 0 ? table_id : 0);
- }
- else
+ if (traffic_type != SR_STEER_IPV4 && traffic_type != SR_STEER_IPV6)
return -1;
+ /* Compute the steer policy key */
+ key.prefix.as_u64[0] = prefix->as_u64[0];
+ key.prefix.as_u64[1] = prefix->as_u64[1];
+ key.mask_width = mask_width;
+ key.fib_table = (table_id != (u32) ~ 0 ? table_id : 0);
key.traffic_type = traffic_type;
- if (traffic_type != SR_STEER_IPV4 && traffic_type != SR_STEER_IPV6)
- return -1;
-
/*
* Search for steering policy. If already exists we are adding a new
* color.