From 30684ac044bbb8e11ef100a24c01eb37ba7a8876 Mon Sep 17 00:00:00 2001 From: Chris Luke Date: Thu, 29 Mar 2018 12:56:58 -0700 Subject: [PATCH] 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 --- src/vlib/linux/pci.c | 3 ++- src/vnet/ip/ip4_reassembly.c | 2 ++ src/vnet/ip/ip6_reassembly.c | 2 ++ src/vnet/ip/ip_api.c | 1 + src/vnet/srmpls/sr_mpls_policy.c | 4 ++++ src/vnet/srmpls/sr_mpls_steering.c | 18 ++++++------------ 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. -- 2.16.6