diff options
author | Ole Troan <ot@cisco.com> | 2021-02-06 13:02:41 +0100 |
---|---|---|
committer | Neale Ranns <neale@graphiant.com> | 2021-02-09 09:56:56 +0000 |
commit | c9c9143898aa1f5b5aa90ab03a4c94181dcf7ed6 (patch) | |
tree | 87ece208cd36415f92566cd2b3c4aebf4abeff94 | |
parent | 070387d3f4b0b5a5742b95fca19404cb50fa9927 (diff) |
nat: fix coverity errors
Including a general missing free in fromjson autogenerated code.
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: I9ab2b0193135e2fb3d62d51b3c114df56969e341
Signed-off-by: Ole Troan <ot@cisco.com>
-rw-r--r-- | src/plugins/nat/pnat/pnat.h | 5 | ||||
-rw-r--r-- | src/plugins/nat/pnat/pnat_cli.c | 4 | ||||
-rw-r--r-- | src/plugins/nat/test/test_pnat.py | 4 | ||||
-rw-r--r-- | src/tools/vppapigen/vppapigen_c.py | 2 |
4 files changed, 7 insertions, 8 deletions
diff --git a/src/plugins/nat/pnat/pnat.h b/src/plugins/nat/pnat/pnat.h index c5869ce3ca6..af64fceb4d1 100644 --- a/src/plugins/nat/pnat/pnat.h +++ b/src/plugins/nat/pnat/pnat.h @@ -109,12 +109,11 @@ static inline void pnat_calc_key(u32 sw_if_index, pnat_attachment_point_t attachment, ip4_address_t src, ip4_address_t dst, u8 protocol, u16 sport, u16 dport, pnat_mask_fast_t mask, clib_bihash_kv_16_8_t *kv) { - kv->key[0] = kv->key[1] = 0; kv->key[0] = (u64)src.as_u32 << 32 | dst.as_u32; kv->key[0] &= mask.as_u64[0]; - kv->key[1] |= + kv->key[1] = (u64)protocol << 56 | (u64)sw_if_index << 36 | (u64)attachment << 32; - kv->key[1] |= sport << 16 | dport; + kv->key[1] |= (u32)sport << 16 | dport; kv->key[1] &= mask.as_u64[1]; } diff --git a/src/plugins/nat/pnat/pnat_cli.c b/src/plugins/nat/pnat/pnat_cli.c index 2d389013c08..84dfd8d5fc4 100644 --- a/src/plugins/nat/pnat/pnat_cli.c +++ b/src/plugins/nat/pnat/pnat_cli.c @@ -97,12 +97,12 @@ uword unformat_pnat_5tuple(unformat_input_t *input, va_list *args) { else if (unformat(input, "dst %U", unformat_ip4_address, &t->dst)) t->mask |= PNAT_DA; else if (unformat(input, "sport %d", &sport)) { - if (sport < 0 || sport > 65535) + if (sport == 0 || sport > 65535) return 0; t->mask |= PNAT_SPORT; t->sport = sport; } else if (unformat(input, "dport %d", &dport)) { - if (dport < 0 || dport > 65535) + if (dport == 0 || dport > 65535) return 0; t->mask |= PNAT_DPORT; t->dport = dport; diff --git a/src/plugins/nat/test/test_pnat.py b/src/plugins/nat/test/test_pnat.py index 5e52fa9f135..d5b60050691 100644 --- a/src/plugins/nat/test/test_pnat.py +++ b/src/plugins/nat/test/test_pnat.py @@ -93,10 +93,10 @@ class TestPNAT(VppTestCase): 'rewrite': {'mask': 0xa, 'dst': self.pg1.remote_ip4, 'dport': 5555}, 'send': (IP(src=self.pg0.remote_ip4, dst='10.10.10.10') / - UDP(dport=6871)), + UDP(sport=65530, dport=6871)), 'reply': (IP(src=self.pg0.remote_ip4, dst=self.pg1.remote_ip4) / - UDP(dport=5555)) + UDP(sport=65530, dport=5555)) }, { 'input': PNAT_IP4_INPUT, diff --git a/src/tools/vppapigen/vppapigen_c.py b/src/tools/vppapigen/vppapigen_c.py index 0798e9aca26..1886c98d6be 100644 --- a/src/tools/vppapigen/vppapigen_c.py +++ b/src/tools/vppapigen/vppapigen_c.py @@ -367,7 +367,7 @@ class FromJSON(): write(' {msgvar} = {t}_fromjson({msgvar}, ' '{msgsize}, item, &a->{n});\n' .format(t=t, n=o.fieldname, msgvar=msgvar, msgsize=msgsize)) - write(' if (!{msgvar}) return 0;\n'.format(msgvar=msgvar)) + write(' if (!{msgvar}) {{ free(a); return 0;}} \n'.format(msgvar=msgvar)) write(' // end field {}\n'.format(o.fieldname)) |