Clean up coverity warnings, VPP-486 96/3796/2
authorDave Barach <dave@barachs.net>
Fri, 11 Nov 2016 22:27:51 +0000 (17:27 -0500)
committerDamjan Marion <dmarion.lists@gmail.com>
Sat, 12 Nov 2016 00:05:41 +0000 (00:05 +0000)
Change-Id: I709e7cf0bb52d8e6cdc9ddb3b7648660204aa3bd
Signed-off-by: Dave Barach <dave@barachs.net>
vlib-api/vlibapi/api_shared.c
vnet/vnet/ip/ip6_neighbor.c
vppinfra/vppinfra/random.h

index c133922..511f693 100644 (file)
@@ -896,6 +896,7 @@ vl_msg_api_process_file (vlib_main_t * vm, u8 * filename,
              || (am->msg_endian_handlers[msg_id] == 0))
            {
              vlib_cli_output (vm, "Ugh: msg id %d no endian swap\n", msg_id);
+             munmap (hp, file_size);
              return;
            }
          endian_fp = am->msg_endian_handlers[msg_id];
index 5585c95..cebe09a 100644 (file)
@@ -1881,11 +1881,10 @@ ip6_neighbor_sw_interface_add_del (vnet_main_t * vnm,
         a->min_delay_between_radv = MIN_DELAY_BETWEEN_RAS;
         a->max_delay_between_radv = MAX_DELAY_BETWEEN_RAS;
         a->max_rtr_default_lifetime = MAX_DEF_RTR_LIFETIME;
-        a->seed = random_default_seed();
-        
-        /* for generating random interface ids */
-        a->randomizer = 0x1119194911191949ULL;
-        a->randomizer = random_u64 ((u32 *)&a->randomizer);
+        a->seed = (u32) clib_cpu_time_now();
+         (void) random_u32 (&a->seed);
+         a->randomizer = clib_cpu_time_now();
+        (void) random_u64 (&a->randomizer);
         
         a->initial_adverts_count = MAX_INITIAL_RTR_ADVERTISEMENTS ; 
         a->initial_adverts_sent = a->initial_adverts_count-1;
index fad0589..5c139d0 100644 (file)
@@ -119,17 +119,14 @@ random_default_seed (void)
 #endif
 
 /** \brief 64-bit random number generator
-
-    created via two calls to random_u32(). Quick and dirty.
-*/
+ * Again, constants courtesy of Donald Knuth.
+ *
+ */
 always_inline u64
-random_u64 (u32 * seed)
+random_u64 (u64 * seed)
 {
-  u64 result;
-
-  result = (u64) random_u32 (seed) << 32;
-  result |= random_u32 (seed);
-  return result;
+  *seed = 6364136223846793005ULL * *seed + 1442695040888963407ULL;
+  return *seed;
 }
 
 /** \brief machine word size random number generator */
@@ -138,7 +135,7 @@ always_inline uword
 random_uword (u32 * seed)
 {
   if (sizeof (uword) == sizeof (u64))
-    return random_u64 (seed);
+    return random_u64 ((u64 *) seed);
   else
     return random_u32 (seed);
 }