From 14156fa831e5652ec43552d0dd5c16a7de412261 Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Fri, 4 Oct 2019 21:53:53 +0200 Subject: 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 Acked-by: Pablo Neira Ayuso --- src/obj/tunnel.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/obj') 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; -- cgit v1.2.3