Coverity warnings in new FIB code (VPP-484) 78/3378/3
authorNeale Ranns <nranns@cisco.com>
Wed, 12 Oct 2016 12:51:05 +0000 (13:51 +0100)
committerChris Luke <chris_luke@comcast.com>
Wed, 12 Oct 2016 17:51:06 +0000 (17:51 +0000)
Change-Id: Ie221e246dd8c6a1b3c76e7aa85924762d4397782
Signed-off-by: Neale Ranns <nranns@cisco.com>
vnet/vnet/fib/fib_entry_src_interface.c
vnet/vnet/fib/fib_entry_src_lisp.c
vnet/vnet/fib/fib_entry_src_mpls.c
vnet/vnet/fib/fib_path_ext.c
vnet/vnet/fib/fib_test.c
vnet/vnet/fib/fib_walk.c
vnet/vnet/ip/ip4_forward.c
vnet/vnet/lisp-gpe/lisp_gpe_tenant.c
vnet/vnet/mpls/mpls.c

index 2fb6167..ca04716 100644 (file)
@@ -51,7 +51,7 @@ fib_entry_src_interface_path_swap (fib_entry_src_t *src,
                          src->fes_pl,
                          fib_entry_get_default_chain_type(entry)));
 
-       if (IP_LOOKUP_NEXT_GLEAN == adj->lookup_next_index);
+       if (IP_LOOKUP_NEXT_GLEAN == adj->lookup_next_index)
         {
             /*
              * the connected prefix will link to a glean on a non-p2p
index 116c492..7f8b91b 100644 (file)
@@ -86,7 +86,10 @@ fib_entry_src_lisp_add (fib_entry_src_t *src,
 {
     if (FIB_ENTRY_FLAG_NONE != flags)
     {
-       src->fes_pl = fib_path_list_create_special(proto, flags, dpo);
+       src->fes_pl = fib_path_list_create_special(
+                         proto,
+                         fib_entry_src_flags_2_path_list_flags(flags),
+                         dpo);
     }
 }
 
index 79c745a..4f4a023 100644 (file)
@@ -71,7 +71,7 @@ fib_entry_src_mpls_set_data (fib_entry_src_t *src,
                              const fib_entry_t *entry,
                              const void *data)
 {
-    dpo_proto_t payload_proto;
+    fib_protocol_t payload_proto;
     fib_node_index_t fei;
     mpls_label_t label;
     mpls_eos_bit_t eos;
index f40c749..05e62d9 100644 (file)
@@ -106,6 +106,8 @@ fib_path_ext_stack (fib_path_ext_t *path_ext,
     {
     case FIB_FORW_CHAIN_TYPE_MPLS_EOS:
        ASSERT(0);
+        return (nhs);
+       break;
     case FIB_FORW_CHAIN_TYPE_UNICAST_IP4:
     case FIB_FORW_CHAIN_TYPE_UNICAST_IP6:
        if (MPLS_IETF_IMPLICIT_NULL_LABEL == path_ext->fpe_label)
index c9a937b..7729209 100644 (file)
@@ -217,6 +217,8 @@ fib_test_urpf_is_equal (fib_node_index_t fei,
 
     dpo_reset(&dpo);
 
+    va_end(ap);
+
     return (1);
 }
 
@@ -4835,7 +4837,9 @@ fib_test_validate_entry (fib_node_index_t fei,
        break;
     case FIB_PROTOCOL_MPLS:
        {
-           mpls_unicast_header_t hdr;
+           mpls_unicast_header_t hdr = {
+               .label_exp_s_ttl = 0,
+           };
 
            vnet_mpls_uc_set_label(&hdr.label_exp_s_ttl, pfx.fp_label);
            vnet_mpls_uc_set_s(&hdr.label_exp_s_ttl, pfx.fp_eos);
index bb1a2ac..1771047 100644 (file)
@@ -248,8 +248,8 @@ fib_walk_destroy (fib_walk_t *fwalk)
      * add the stats to the continuous histogram collection.
      */
     bucket = (fwalk->fw_n_visits / HISTOGRAM_VISITS_PER_WALK_INCR);
-    bucket = (bucket > HISTOGRAM_VISITS_PER_WALK_MAX ?
-             HISTOGRAM_VISITS_PER_WALK_MAX - 1 :
+    bucket = (bucket > HISTOGRAM_VISITS_PER_WALK_N_BUCKETS ?
+             HISTOGRAM_VISITS_PER_WALK_N_BUCKETS - 1 :
              bucket);
     fib_walk_hist_vists_per_walk[bucket]++;
 
index 321716d..c6a6c72 100644 (file)
@@ -193,7 +193,7 @@ ip4_lookup_inline (vlib_main_t * vm,
               hash_c0 = vnet_buffer (p0)->ip.flow_hash =
                 ip4_compute_flow_hash (ip0, flow_hash_config0);
             }
-          if (PREDICT_FALSE(lb0->lb_n_buckets > 1))
+          if (PREDICT_FALSE(lb1->lb_n_buckets > 1))
             {
              flow_hash_config1 = lb1->lb_hash_config;
               hash_c1 = vnet_buffer (p1)->ip.flow_hash =
index a7b0dd2..6abb773 100644 (file)
@@ -142,6 +142,7 @@ lisp_gpe_tenant_l3_iface_unlock (u32 vni)
   if (NULL == lt)
     {
       clib_warning ("No tenant for VNI %d", vni);
+      return;
     }
 
   if (0 == lt->lt_locks[LISP_GPE_TENANT_LOCK_L3_IFACE])
index be5e882..de57da8 100644 (file)
@@ -744,6 +744,8 @@ vnet_mpls_local_label (vlib_main_t * vm,
   is_ip = 0;
   table_id = 0;
   eos = MPLS_EOS;
+  is_del = 0;
+  local_label = MPLS_LABEL_INVALID;
 
    /* Get a line of input. */
   if (! unformat_user (input, unformat_line_input, line_input))
@@ -818,6 +820,14 @@ vnet_mpls_local_label (vlib_main_t * vm,
 
     }
 
+  if (MPLS_LABEL_INVALID == local_label)
+  {
+      error = clib_error_return (0, "local-label required: %U",
+                                format_unformat_error, input);
+      goto done;
+  }
+
+
   if (is_ip)
   {
       u32 fib_index = fib_table_find(pfx.fp_proto, table_id);