NAT44: fix ICMP checksum update crash (VPP-1205) 28/11328/2
authorMatus Fabian <matfabia@cisco.com>
Fri, 23 Mar 2018 10:42:06 +0000 (03:42 -0700)
committerOle Trøan <otroan@employees.org>
Fri, 23 Mar 2018 11:48:49 +0000 (11:48 +0000)
Change-Id: I3e4bbfe205c86cb0839dd5c542f083dbe6bea881
Signed-off-by: Matus Fabian <matfabia@cisco.com>
src/plugins/nat/in2out.c
src/plugins/nat/out2in.c

index 8748013..8b565b1 100755 (executable)
@@ -794,6 +794,9 @@ static inline u32 icmp_in2out (snat_main_t *sm,
                          src_address /* changed member */);
   ip0->checksum = ip_csum_fold (sum0);
 
+  if (icmp0->checksum == 0)
+    icmp0->checksum = 0xffff;
+
   if (!icmp_is_error_message (icmp0))
     {
       new_id0 = sm0.port;
index 7f811d9..ebd0dc4 100755 (executable)
@@ -644,6 +644,9 @@ static inline u32 icmp_out2in (snat_main_t *sm,
                          dst_address /* changed member */);
   ip0->checksum = ip_csum_fold (sum0);
 
+  if (icmp0->checksum == 0)
+    icmp0->checksum = 0xffff;
+
   if (!icmp_is_error_message (icmp0))
     {
       new_id0 = sm0.port;