diff --git a/include/netlink/attr.h b/include/netlink/attr.h index 0ed3da3..82e4c38 100644 --- a/include/netlink/attr.h +++ b/include/netlink/attr.h @@ -205,7 +205,7 @@ extern int nla_is_nested(struct nlattr *); * @arg value NUL terminated character string. */ #define NLA_PUT_STRING(msg, attrtype, value) \ - NLA_PUT(msg, attrtype, strlen(value) + 1, value) + NLA_PUT(msg, attrtype, (int) strlen(value) + 1, value) /** * Add flag attribute to netlink message. diff --git a/lib/attr.c b/lib/attr.c index 66c029c..d3de399 100644 --- a/lib/attr.c +++ b/lib/attr.c @@ -648,7 +648,7 @@ int nla_put_u64(struct nl_msg *msg, int attrtype, uint64_t value) */ uint64_t nla_get_u64(struct nlattr *nla) { - uint64_t tmp; + uint64_t tmp = 0; nla_memcpy(&tmp, nla, sizeof(tmp)); diff --git a/lib/route/cls/u32.c b/lib/route/cls/u32.c index e91c39a..0a4e83c 100644 --- a/lib/route/cls/u32.c +++ b/lib/route/cls/u32.c @@ -170,9 +170,12 @@ static int u32_clone(void *_dst, void *_src) !(dst->cu_selector = nl_data_clone(src->cu_selector))) return -NLE_NOMEM; - if (src->cu_act && !(dst->cu_act = rtnl_act_alloc())) - return -NLE_NOMEM; - memcpy(dst->cu_act, src->cu_act, sizeof(struct rtnl_act)); + if (src->cu_act) { + if (!(dst->cu_act = rtnl_act_alloc())) + return -NLE_NOMEM; + + memcpy(dst->cu_act, src->cu_act, sizeof(struct rtnl_act)); + } if (src->cu_police && !(dst->cu_police = nl_data_clone(src->cu_police))) return -NLE_NOMEM;