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 <p...@nwl.cc>
---
 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

Reply via email to