NAT44: fix ICMP checksum update crash (VPP-1205) 33/11333/2
authorMatus Fabian <[email protected]>
Fri, 23 Mar 2018 10:42:06 +0000 (03:42 -0700)
committerOle Trøan <[email protected]>
Fri, 23 Mar 2018 12:36:45 +0000 (12:36 +0000)
Change-Id: I3e4bbfe205c86cb0839dd5c542f083dbe6bea881
Signed-off-by: Matus Fabian <[email protected]>
(cherry picked from commit 3f2dd30b0bf7cf3d82c720d5065178c1fa628c6b)

src/plugins/nat/in2out.c
src/plugins/nat/out2in.c

index f29e157..b3b205a 100755 (executable)
@@ -727,6 +727,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 97cd290..397344d 100755 (executable)
@@ -580,6 +580,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;