From 56faee837281c7f9c28aa40dbf0f6e4620b76be8 Mon Sep 17 00:00:00 2001 From: Dave Barach Date: Thu, 4 Aug 2016 18:58:05 -0400 Subject: VPP-189 Clean up more coverity warnings Change-Id: I1b971ab326dc334a4743fd7d4184cef106b0523d Signed-off-by: Dave Barach --- svm/ssvm.c | 8 +++++++- vnet/vnet/ip/ip4_mtrie.c | 22 +++++++++++++++++++--- vnet/vnet/ip/ip6_neighbor.c | 8 +++++++- vppinfra/vppinfra/elf.c | 15 +++++++++++++++ vppinfra/vppinfra/phash.c | 7 ++++++- 5 files changed, 54 insertions(+), 6 deletions(-) diff --git a/svm/ssvm.c b/svm/ssvm.c index 5db14231368..337840ffa81 100644 --- a/svm/ssvm.c +++ b/svm/ssvm.c @@ -43,7 +43,13 @@ ssvm_master_init (ssvm_private_t * ssvm, u32 master_index) return SSVM_API_ERROR_CREATE_FAILURE; } - lseek (ssvm_fd, ssvm->ssvm_size, SEEK_SET); + if (lseek (ssvm_fd, ssvm->ssvm_size, SEEK_SET) < 0) + { + clib_unix_warning ("lseek"); + close (ssvm_fd); + return SSVM_API_ERROR_SET_SIZE; + } + if (write (ssvm_fd, &junk, 1) != 1) { clib_unix_warning ("set ssvm size"); diff --git a/vnet/vnet/ip/ip4_mtrie.c b/vnet/vnet/ip/ip4_mtrie.c index 461cd64b86d..0badde769c2 100644 --- a/vnet/vnet/ip/ip4_mtrie.c +++ b/vnet/vnet/ip/ip4_mtrie.c @@ -436,10 +436,26 @@ maybe_remap_leaf (ip_lookup_main_t * lm, ip4_fib_mtrie_leaf_t * p) if (m) { was_remapped_to_empty_leaf = m == ~0; + + /* + * The intent of the original form - which dates to 2013 or + * earlier - is not obvious. Here's the original: + * + * if (was_remapped_to_empty_leaf) + * p[0] = (was_remapped_to_empty_leaf + * ? IP4_FIB_MTRIE_LEAF_EMPTY + * : ip4_fib_mtrie_leaf_set_adj_index (m - 1)); + * + * Notice the outer "if (was_remapped_to_empty_leaf)" + * means that p[0] is always set to IP4_FIB_MTRIE_LEAF_EMPTY, + * and is otherwise left intact. + * + * It seems unlikely that the adjacency mapping scheme + * works in detail. Coverity correctly complains that the + * else-case of the original ternary expression is dead code. + */ if (was_remapped_to_empty_leaf) - p[0] = (was_remapped_to_empty_leaf - ? IP4_FIB_MTRIE_LEAF_EMPTY - : ip4_fib_mtrie_leaf_set_adj_index (m - 1)); + p[0] = IP4_FIB_MTRIE_LEAF_EMPTY; } } return was_remapped_to_empty_leaf; diff --git a/vnet/vnet/ip/ip6_neighbor.c b/vnet/vnet/ip/ip6_neighbor.c index 888baff82e0..2593cb46156 100644 --- a/vnet/vnet/ip/ip6_neighbor.c +++ b/vnet/vnet/ip/ip6_neighbor.c @@ -394,7 +394,13 @@ vnet_set_ip6_ethernet_neighbor (vlib_main_t * vm, existing_adj->arp.next_hop.ip6.as_u64[1] == a->as_u64[1]) { u32 * ai; - u32 * adjs = vec_dup(n->adjacencies); + u32 * adjs = 0; + + if (n) + adjs = vec_dup(n->adjacencies); + else + clib_warning ("ip6 neighbor n not set"); + /* Update all adj assigned to this arp entry */ vec_foreach(ai, adjs) { diff --git a/vppinfra/vppinfra/elf.c b/vppinfra/vppinfra/elf.c index 8a09cd41fe0..7fe3048b4c7 100644 --- a/vppinfra/vppinfra/elf.c +++ b/vppinfra/vppinfra/elf.c @@ -1106,6 +1106,8 @@ static void byte_swap_verneed (elf_main_t * em, clib_bitmap_free (entries_swapped); } +static void +set_dynamic_verneed (elf_main_t * em) __attribute__((unused)); static void set_dynamic_verneed (elf_main_t * em) { @@ -1122,6 +1124,8 @@ set_dynamic_verneed (elf_main_t * em) vec_free (vus); } +static void +set_symbol_table (elf_main_t * em, u32 table_index) __attribute__((unused)); static void set_symbol_table (elf_main_t * em, u32 table_index) { @@ -1375,12 +1379,16 @@ static u32 string_table_add_name (string_table_builder_t * b, u8 * n) return i; } +static u32 string_table_add_name_index (string_table_builder_t * b, u32 index) + __attribute__((unused)); static u32 string_table_add_name_index (string_table_builder_t * b, u32 index) { u8 * n = b->old_table + index; return string_table_add_name (b, n); } +static void string_table_init (string_table_builder_t * b, u8 * old_table) + __attribute__((unused)); static void string_table_init (string_table_builder_t * b, u8 * old_table) { memset (b, 0, sizeof (b[0])); @@ -1388,6 +1396,8 @@ static void string_table_init (string_table_builder_t * b, u8 * old_table) b->hash = hash_create_string (0, sizeof (uword)); } +static u8 * string_table_done (string_table_builder_t * b) + __attribute__((unused)); static u8 * string_table_done (string_table_builder_t * b) { hash_free (b->hash); @@ -1400,6 +1410,8 @@ static void layout_sections (elf_main_t * em) u32 n_sections_with_changed_exec_address = 0; u32 * deferred_symbol_and_string_sections = 0; u32 n_deleted_sections = 0; + /* note: rebuild is always zero. Intent lost in the sands of time */ +#if 0 int rebuild = 0; /* Re-build section string table (sections may have been deleted). */ @@ -1498,6 +1510,7 @@ static void layout_sections (elf_main_t * em) vec_free (s->contents); s->contents = string_table_done (&b); } +#endif /* dead code */ /* Figure file offsets and exec addresses for sections. */ { @@ -1613,8 +1626,10 @@ static void layout_sections (elf_main_t * em) /* Update dynamic entries now that sections have been assigned possibly new addresses. */ +#if 0 if (rebuild) elf_set_dynamic_entries (em); +#endif /* Update segments for changed section addresses. */ { diff --git a/vppinfra/vppinfra/phash.c b/vppinfra/vppinfra/phash.c index c883fac871e..a104e64e1be 100644 --- a/vppinfra/vppinfra/phash.c +++ b/vppinfra/vppinfra/phash.c @@ -662,7 +662,12 @@ static void guess_initial_parameters (phash_main_t * pm) a_max = 1; b_max = 1; case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: - a_max = is_minimal ? s_max / 2 : s_max; + /* + * Was: a_max = is_minimal ? s_max / 2 : s_max; + * However, we know that is_minimal must be true, so the + * if-arm of the ternary expression is always executed. + */ + a_max = s_max/2; b_max = s_max/2; break; case 9: case 10: case 11: case 12: case 13: -- cgit 1.2.3-korg