nat lb mapping command existed array out of bounds(VPP-979) 75/8375/2
authorflyingeagle23 <wang.hui56@zte.com.cn>
Mon, 11 Sep 2017 08:02:40 +0000 (16:02 +0800)
committerOle Trøan <otroan@employees.org>
Tue, 12 Sep 2017 09:04:46 +0000 (09:04 +0000)
Change-Id: Id1dce0c2eebd4097bc17842f050453b76a94eb70
Signed-off-by: flyingeagle23 <wang.hui56@zte.com.cn>
src/plugins/nat/nat.c

index 8aecac6..b13c857 100644 (file)
@@ -726,7 +726,8 @@ int nat44_add_del_lb_static_mapping (ip4_address_t e_addr, u16 e_port,
           kv.key = m_key.as_u64;
           kv.value = m - sm->static_mappings;
           clib_bihash_add_del_8_8(&sm->static_mapping_by_local, &kv, 1);
-          locals[i].prefix = locals[i - 1].prefix + locals[i].probability;
+          locals[i].prefix = (i == 0) ? locals[i].probability :\
+            (locals[i - 1].prefix + locals[i].probability);
           vec_add1 (m->locals, locals[i]);
           m_key.port = clib_host_to_net_u16 (locals[i].port);
           kv.key = m_key.as_u64;