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 <[email protected]>
---
src/obj/tunnel.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/obj/tunnel.c b/src/obj/tunnel.c
index 7ffade8c46ae7..100aa099c6e97 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;
--
2.23.0