summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPhil Sutter <phil@nwl.cc>2019-10-04 21:53:53 +0200
committerPhil Sutter <phil@nwl.cc>2019-10-15 18:29:17 +0200
commit14156fa831e5652ec43552d0dd5c16a7de412261 (patch)
tree92c6a3f2fc34b6280e4c183b3e44bad122d9a7c5 /src
parentb82e1bf4ba811273341ad4fde272271782a8ada1 (diff)
obj/tunnel: Fix for undefined behaviour
Cppcheck complains: Shifting signed 32-bit value by 31 bits is undefined behaviour. Indeed, NFTNL_OBJ_TUNNEL_ERSPAN_V2_DIR enum value is 31. Make sure behaviour is as intended by shifting unsigned 1. Fixes: ea63a05272f54 ("obj: add tunnel support") Signed-off-by: Phil Sutter <phil@nwl.cc> Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src')
-rw-r--r--src/obj/tunnel.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/obj/tunnel.c b/src/obj/tunnel.c
index 7ffade8..100aa09 100644
--- a/src/obj/tunnel.c
+++ b/src/obj/tunnel.c
@@ -227,7 +227,7 @@ nftnl_obj_tunnel_build(struct nlmsghdr *nlh, const struct nftnl_obj *e)
if (e->flags & (1 << NFTNL_OBJ_TUNNEL_ERSPAN_VERSION) &&
(e->flags & (1 << NFTNL_OBJ_TUNNEL_ERSPAN_V1_INDEX) ||
(e->flags & (1 << NFTNL_OBJ_TUNNEL_ERSPAN_V2_HWID) &&
- e->flags & (1 << NFTNL_OBJ_TUNNEL_ERSPAN_V2_DIR)))) {
+ e->flags & (1u << NFTNL_OBJ_TUNNEL_ERSPAN_V2_DIR)))) {
struct nlattr *nest_inner;
nest = mnl_attr_nest_start(nlh, NFTA_TUNNEL_KEY_OPTS);
@@ -240,7 +240,7 @@ nftnl_obj_tunnel_build(struct nlmsghdr *nlh, const struct nftnl_obj *e)
if (e->flags & (1 << NFTNL_OBJ_TUNNEL_ERSPAN_V2_HWID))
mnl_attr_put_u8(nlh, NFTA_TUNNEL_KEY_ERSPAN_V2_HWID,
tun->u.tun_erspan.u.v2.hwid);
- if (e->flags & (1 << NFTNL_OBJ_TUNNEL_ERSPAN_V2_DIR))
+ if (e->flags & (1u << NFTNL_OBJ_TUNNEL_ERSPAN_V2_DIR))
mnl_attr_put_u8(nlh, NFTA_TUNNEL_KEY_ERSPAN_V2_DIR,
tun->u.tun_erspan.u.v2.dir);
mnl_attr_nest_end(nlh, nest_inner);
@@ -430,7 +430,7 @@ nftnl_obj_tunnel_parse_erspan(struct nftnl_obj *e, struct nlattr *attr,
if (tb[NFTA_TUNNEL_KEY_ERSPAN_V2_DIR]) {
tun->u.tun_erspan.u.v2.dir =
mnl_attr_get_u8(tb[NFTA_TUNNEL_KEY_ERSPAN_V2_DIR]);
- e->flags |= (1 << NFTNL_OBJ_TUNNEL_ERSPAN_V2_DIR);
+ e->flags |= (1u << NFTNL_OBJ_TUNNEL_ERSPAN_V2_DIR);
}
return 0;