VPP-189 fix more coverity warnings 63/2363/1
authorDave Barach <[email protected]>
Fri, 12 Aug 2016 13:26:47 +0000 (09:26 -0400)
committerDave Barach <[email protected]>
Fri, 12 Aug 2016 13:27:05 +0000 (09:27 -0400)
Change-Id: If464a5f06ab15eead9eaf12e89792d3761796956
Signed-off-by: Dave Barach <[email protected]>
vnet/vnet/classify/vnet_classify.c
vnet/vnet/lisp-gpe/ip_forward.c
vnet/vnet/map/map.c
vnet/vnet/policer/xlate.c
vpp-api-test/vat/api_format.c
vpp/vpp-api/api.c
vppinfra/vppinfra/elf.c

index 23aa515..3b75ab5 100644 (file)
@@ -980,8 +980,11 @@ uword unformat_classify_mask (unformat_input_t * input, va_list * args)
           if (l2 == 0)
             vec_validate (l2, 13);
           mask = l2;
-          vec_append (mask, l3);
-          vec_free (l3);
+          if (l3)
+            {
+              vec_append (mask, l3);
+              vec_free (l3);
+            }
         }
 
       /* Scan forward looking for the first significant mask octet */
@@ -1715,8 +1718,11 @@ uword unformat_classify_match (unformat_input_t * input, va_list * args)
           if (l2 == 0)
             vec_validate_aligned (l2, 13, sizeof(u32x4));
           match = l2;
-          vec_append_aligned (match, l3, sizeof(u32x4));
-          vec_free (l3);
+          if (l3)
+            {
+              vec_append_aligned (match, l3, sizeof(u32x4));
+              vec_free (l3);
+            }
         }
 
       /* Make sure the vector is big enough even if key is all 0's */
index 47f3f7b..98c5222 100644 (file)
@@ -162,6 +162,7 @@ ip4_sd_fib_clear_src_fib (lisp_gpe_main_t * lgm, ip4_fib_t * fib)
       ip4_route_t x;
 
       x.address_length = i;
+      x.index = 0;              /* shut up coverity */
 
       hash_foreach_pair (p, hash,
       ({
index 8236811..93a10c6 100644 (file)
@@ -511,10 +511,10 @@ map_add_domain_command_fn (vlib_main_t * vm,
   ip4_address_t ip4_prefix;
   ip6_address_t ip6_prefix;
   ip6_address_t ip6_src;
-  u32 ip6_prefix_len, ip4_prefix_len, map_domain_index, ip6_src_len;
+  u32 ip6_prefix_len = 0, ip4_prefix_len = 0, map_domain_index, ip6_src_len;
   u32 num_m_args = 0;
   /* Optional arguments */
-  u32 ea_bits_len, psid_offset = 0, psid_length = 0;
+  u32 ea_bits_len = 0, psid_offset = 0, psid_length = 0;
   u32 mtu = 0;
   u8 flags = 0;
   ip6_src_len = 128;
@@ -607,7 +607,7 @@ map_add_rule_command_fn (vlib_main_t * vm,
   unformat_input_t _line_input, *line_input = &_line_input;
   ip6_address_t tep;
   u32 num_m_args = 0;
-  u32 psid, map_domain_index;
+  u32 psid = 0, map_domain_index;
 
   /* Get a line of input. */
   if (!unformat_user (input, unformat_line_input, line_input))
index 61976b1..c9250eb 100644 (file)
@@ -1238,11 +1238,11 @@ sse2_pol_convert_hw_to_cfg_params (sse2_qos_pol_hw_params_st  *hw,
         return EINVAL;
     }
 
-    temp_rate = ((hw->avg_rate_man << hw->rate_exp) * 8LL *
+    temp_rate = (((uint64_t) hw->avg_rate_man << hw->rate_exp) * 8LL *
                 SSE2_QOS_POL_TICKS_PER_SEC)/1000;
     cfg->rb.kbps.cir_kbps = (uint32_t)temp_rate;
 
-    temp_rate = ((hw->peak_rate_man << hw->rate_exp) * 8LL *
+    temp_rate = (((uint64_t) hw->peak_rate_man << hw->rate_exp) * 8LL *
                 SSE2_QOS_POL_TICKS_PER_SEC)/1000;
     cfg->rb.kbps.eir_kbps = (uint32_t)temp_rate;
 
index cd65aaa..4ad447c 100644 (file)
@@ -10397,7 +10397,7 @@ api_ipsec_spd_add_del_entry (vat_main_t * vam)
   f64 timeout;
   u8 is_add = 1, is_outbound = 0, is_ipv6 = 0, is_ip_any = 1;
   u32 spd_id = 0, sa_id = 0, protocol = 0, policy = 0;
-  i32 priority;
+  i32 priority = 0;
   u32 rport_start = 0, rport_stop = (u32) ~ 0;
   u32 lport_start = 0, lport_stop = (u32) ~ 0;
   ip4_address_t laddr4_start, laddr4_stop, raddr4_start, raddr4_stop;
index 4c87476..3e3548d 100644 (file)
@@ -7092,36 +7092,32 @@ send_mpls_gre_tunnel_entry (vpe_api_main_t * am,
                            mpls_gre_tunnel_t * gt, u32 index, u32 context)
 {
   vl_api_mpls_gre_tunnel_details_t *mp;
-
-  mp = vl_msg_api_alloc (sizeof (*mp));
-  memset (mp, 0, sizeof (*mp));
-  mp->_vl_msg_id = ntohs (VL_API_MPLS_GRE_TUNNEL_DETAILS);
-  mp->context = context;
-
-  if (gt != NULL)
-    {
-      mp->tunnel_index = htonl (index);
-      mp->tunnel_src = gt->tunnel_src.as_u32;
-      mp->tunnel_dst = gt->tunnel_dst.as_u32;
-      mp->intfc_address = gt->intfc_address.as_u32;
-      mp->mask_width = htonl (gt->mask_width);
-      mp->inner_fib_index = htonl (gt->inner_fib_index);
-      mp->outer_fib_index = htonl (gt->outer_fib_index);
-      mp->encap_index = htonl (gt->encap_index);
-      mp->hw_if_index = htonl (gt->hw_if_index);
-      mp->l2_only = htonl (gt->l2_only);
-    }
-
   mpls_main_t *mm = &mpls_main;
   mpls_encap_t *e;
   int i;
-  u32 len = 0;
+  u32 nlabels;
 
   e = pool_elt_at_index (mm->encaps, gt->encap_index);
-  len = vec_len (e->labels);
-  mp->nlabels = htonl (len);
+  nlabels = vec_len (e->labels);
 
-  for (i = 0; i < len; i++)
+  mp = vl_msg_api_alloc (sizeof (*mp) + nlabels * sizeof(u32));
+  memset (mp, 0, sizeof (*mp));
+  mp->_vl_msg_id = ntohs (VL_API_MPLS_GRE_TUNNEL_DETAILS);
+  mp->context = context;
+
+  mp->tunnel_index = htonl (index);
+  mp->tunnel_src = gt->tunnel_src.as_u32;
+  mp->tunnel_dst = gt->tunnel_dst.as_u32;
+  mp->intfc_address = gt->intfc_address.as_u32;
+  mp->mask_width = htonl (gt->mask_width);
+  mp->inner_fib_index = htonl (gt->inner_fib_index);
+  mp->outer_fib_index = htonl (gt->outer_fib_index);
+  mp->encap_index = htonl (gt->encap_index);
+  mp->hw_if_index = htonl (gt->hw_if_index);
+  mp->l2_only = htonl (gt->l2_only);
+  mp->nlabels = htonl (nlabels);
+
+  for (i = 0; i < nlabels; i++)
     {
       mp->labels[i] =
        htonl (vnet_mpls_uc_get_label
@@ -7136,7 +7132,6 @@ vl_api_mpls_gre_tunnel_dump_t_handler (vl_api_mpls_gre_tunnel_dump_t * mp)
 {
   vpe_api_main_t *am = &vpe_api_main;
   unix_shared_memory_queue_t *q;
-  vlib_main_t *vm = &vlib_global_main;
   mpls_main_t *mm = &mpls_main;
   mpls_gre_tunnel_t *gt;
   u32 index = ntohl (mp->tunnel_index);
@@ -7145,30 +7140,24 @@ vl_api_mpls_gre_tunnel_dump_t_handler (vl_api_mpls_gre_tunnel_dump_t * mp)
   if (q == 0)
     return;
 
-  if (pool_elts (mm->gre_tunnels))
+  if (index != ~0)
     {
-      if (mp->tunnel_index >= 0)
-       {
-         vlib_cli_output (vm, "MPLS-GRE tunnel %u", index);
-         gt = pool_elt_at_index (mm->gre_tunnels, index);
-         send_mpls_gre_tunnel_entry (am, q, gt, gt - mm->gre_tunnels,
-                                     mp->context);
-       }
-      else
-       {
-         vlib_cli_output (vm, "MPLS-GRE tunnels");
-          /* *INDENT-OFF* */
-          pool_foreach (gt, mm->gre_tunnels,
-          ({
-            send_mpls_gre_tunnel_entry (am, q, gt, gt - mm->gre_tunnels,
-                                        mp->context);
-          }));
-          /* *INDENT-ON* */
-       }
+      if (!pool_is_free_index (mm->gre_tunnels, index))
+        {
+          gt = pool_elt_at_index (mm->gre_tunnels, index);
+          send_mpls_gre_tunnel_entry (am, q, gt, gt - mm->gre_tunnels,
+                                      mp->context);
+        }
     }
   else
     {
-      vlib_cli_output (vm, "No MPLS-GRE tunnels");
+      /* *INDENT-OFF* */
+      pool_foreach (gt, mm->gre_tunnels,
+      ({
+        send_mpls_gre_tunnel_entry (am, q, gt, gt - mm->gre_tunnels,
+                                    mp->context);
+      }));
+      /* *INDENT-ON* */
     }
 }
 
@@ -7184,36 +7173,32 @@ send_mpls_eth_tunnel_entry (vpe_api_main_t * am,
                            unix_shared_memory_queue_t * q,
                            mpls_eth_tunnel_t * et, u32 index, u32 context)
 {
+  mpls_main_t *mm = &mpls_main;
+  mpls_encap_t *e;
+  int i;
+  u32 nlabels;
   vl_api_mpls_eth_tunnel_details_t *mp;
 
-  mp = vl_msg_api_alloc (sizeof (*mp));
+  e = pool_elt_at_index (mm->encaps, et->encap_index);
+  nlabels = vec_len (e->labels);
+
+  mp = vl_msg_api_alloc (sizeof (*mp) + nlabels*sizeof(u32));
   memset (mp, 0, sizeof (*mp));
   mp->_vl_msg_id = ntohs (VL_API_MPLS_ETH_TUNNEL_DETAILS);
   mp->context = context;
 
-  if (et != NULL)
-    {
-      mp->tunnel_index = htonl (index);
-      memcpy (mp->tunnel_dst_mac, et->tunnel_dst, 6);
-      mp->intfc_address = et->intfc_address.as_u32;
-      mp->tx_sw_if_index = htonl (et->tx_sw_if_index);
-      mp->inner_fib_index = htonl (et->inner_fib_index);
-      mp->mask_width = htonl (et->mask_width);
-      mp->encap_index = htonl (et->encap_index);
-      mp->hw_if_index = htonl (et->hw_if_index);
-      mp->l2_only = htonl (et->l2_only);
-    }
+  mp->tunnel_index = htonl (index);
+  memcpy (mp->tunnel_dst_mac, et->tunnel_dst, 6);
+  mp->intfc_address = et->intfc_address.as_u32;
+  mp->tx_sw_if_index = htonl (et->tx_sw_if_index);
+  mp->inner_fib_index = htonl (et->inner_fib_index);
+  mp->mask_width = htonl (et->mask_width);
+  mp->encap_index = htonl (et->encap_index);
+  mp->hw_if_index = htonl (et->hw_if_index);
+  mp->l2_only = htonl (et->l2_only);
+  mp->nlabels = htonl (nlabels);
 
-  mpls_main_t *mm = &mpls_main;
-  mpls_encap_t *e;
-  int i;
-  u32 len = 0;
-
-  e = pool_elt_at_index (mm->encaps, et->encap_index);
-  len = vec_len (e->labels);
-  mp->nlabels = htonl (len);
-
-  for (i = 0; i < len; i++)
+  for (i = 0; i < nlabels; i++)
     {
       mp->labels[i] =
        htonl (vnet_mpls_uc_get_label
@@ -7228,7 +7213,6 @@ vl_api_mpls_eth_tunnel_dump_t_handler (vl_api_mpls_eth_tunnel_dump_t * mp)
 {
   vpe_api_main_t *am = &vpe_api_main;
   unix_shared_memory_queue_t *q;
-  vlib_main_t *vm = &vlib_global_main;
   mpls_main_t *mm = &mpls_main;
   mpls_eth_tunnel_t *et;
   u32 index = ntohl (mp->tunnel_index);
@@ -7237,34 +7221,24 @@ vl_api_mpls_eth_tunnel_dump_t_handler (vl_api_mpls_eth_tunnel_dump_t * mp)
   if (q == 0)
     return;
 
-  clib_warning ("Received mpls_eth_tunnel_dump");
-  clib_warning ("Received tunnel index: %u from client %u", index,
-               mp->client_index);
-
-  if (pool_elts (mm->eth_tunnels))
+  if (index != ~0)
     {
-      if (mp->tunnel_index >= 0)
-       {
-         vlib_cli_output (vm, "MPLS-Ethernet tunnel %u", index);
-         et = pool_elt_at_index (mm->eth_tunnels, index);
-         send_mpls_eth_tunnel_entry (am, q, et, et - mm->eth_tunnels,
-                                     mp->context);
-       }
-      else
-       {
-         clib_warning ("MPLS-Ethernet tunnels");
-          /* *INDENT-OFF* */
-          pool_foreach (et, mm->eth_tunnels,
-          ({
-            send_mpls_eth_tunnel_entry (am, q, et, et - mm->eth_tunnels,
-                                        mp->context);
-          }));
-          /* *INDENT-ON* */
-       }
+      if (!pool_is_free_index(mm->eth_tunnels, index))
+        {
+          et = pool_elt_at_index (mm->eth_tunnels, index);
+          send_mpls_eth_tunnel_entry (am, q, et, et - mm->eth_tunnels,
+                                      mp->context);
+        }
     }
   else
     {
-      clib_warning ("No MPLS-Ethernet tunnels");
+      /* *INDENT-OFF* */
+      pool_foreach (et, mm->eth_tunnels,
+      ({
+        send_mpls_eth_tunnel_entry (am, q, et, et - mm->eth_tunnels,
+                                    mp->context);
+      }));
+      /* *INDENT-ON* */
     }
 }
 
@@ -7280,8 +7254,15 @@ send_mpls_fib_encap_details (vpe_api_main_t * am,
                             show_mpls_fib_t * s, u32 context)
 {
   vl_api_mpls_fib_encap_details_t *mp;
+  mpls_main_t *mm = &mpls_main;
+  mpls_encap_t *e;
+  int i;
+  u32 nlabels;
 
-  mp = vl_msg_api_alloc (sizeof (*mp));
+  e = pool_elt_at_index (mm->encaps, s->entry_index);
+  nlabels = vec_len (e->labels);
+
+  mp = vl_msg_api_alloc (sizeof (*mp) + nlabels * sizeof(u32));
   memset (mp, 0, sizeof (*mp));
   mp->_vl_msg_id = ntohs (VL_API_MPLS_FIB_ENCAP_DETAILS);
   mp->context = context;
@@ -7291,16 +7272,9 @@ send_mpls_fib_encap_details (vpe_api_main_t * am,
   mp->dest = s->dest;
   mp->s_bit = htonl (s->s_bit);
 
-  mpls_main_t *mm = &mpls_main;
-  mpls_encap_t *e;
-  int i;
-  u32 len = 0;
-
-  e = pool_elt_at_index (mm->encaps, s->entry_index);
-  len = vec_len (e->labels);
-  mp->nlabels = htonl (len);
+  mp->nlabels = htonl (nlabels);
 
-  for (i = 0; i < len; i++)
+  for (i = 0; i < nlabels; i++)
     {
       mp->labels[i] =
        htonl (vnet_mpls_uc_get_label
@@ -8160,7 +8134,7 @@ api_segment_config (vlib_main_t * vm, unformat_input_t * input)
        {
          /* lookup the username */
          pw = NULL;
-         while (((rv = getpwnam_r (s, &_pw, buf, sizeof (buf), &pw)) == ERANGE) && ( vec_len(buf) <= max_buf_size ))
+         while (((rv = getpwnam_r (s, &_pw, buf, vec_len (buf), &pw)) == ERANGE) && ( vec_len(buf) <= max_buf_size ))
         {
             vec_resize(buf,vec_len(buf)*2);
         }
index 8c5dc6c..63c17ec 100644 (file)
@@ -582,7 +582,7 @@ format_elf_main (u8 * s, va_list * args)
     s = format (s, "\nSegments: %d at file offset 0x%Lx-0x%Lx:\n",
                fh->segment_header_count,
                fh->segment_header_file_offset,
-               (u64) fh->segment_header_file_offset + fh->segment_header_count * fh->segment_header_size);
+               (u64) fh->segment_header_file_offset + (u64) fh->segment_header_count * (u64) fh->segment_header_size);
                
     s = format (s, "%U\n", format_elf_segment, 0);
     vec_foreach (h, copy)