tcp: fix endpoint lookup failed caused by key uninitialized 96/34796/2
authorMercury <mercury124185@gmail.com>
Thu, 23 Dec 2021 11:15:02 +0000 (19:15 +0800)
committerFlorin Coras <florin.coras@gmail.com>
Thu, 23 Dec 2021 17:15:59 +0000 (17:15 +0000)
fix ipv4 key uninitialized in local_endpoints_table,
which will cause transport_endpoint_cleanup() failed
to lookup the endpoint and can not delete it,
as for ipv6, clib_memcpy_fast() will change all bytes of lcl_addr
and there maybe no need to initalize,

Type: fix
Signed-off-by: Mercury <mercury124185@gmail.com>
Change-Id: I56676493a393b1d64eaa438224e256094ca75d2f

src/vnet/tcp/tcp.c

index d4b1d77..af985d2 100644 (file)
@@ -769,6 +769,7 @@ tcp_alloc_custom_local_endpoint (tcp_main_t * tm, ip46_address_t * lcl_addr,
       index = tm->last_v4_addr_rotor++;
       if (tm->last_v4_addr_rotor >= vec_len (tcp_cfg.ip4_src_addrs))
        tm->last_v4_addr_rotor = 0;
+      clib_memset (lcl_addr, 0, sizeof (*lcl_addr));
       lcl_addr->ip4.as_u32 = tcp_cfg.ip4_src_addrs[index].as_u32;
     }
   else