diff options
author | Michael Forney <mforney@mforney.org> | 2019-08-11 04:49:07 (GMT) |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2019-08-16 05:42:03 (GMT) |
commit | de72910e6b3ec4503f23538682a89c4d444c7a92 (patch) | |
tree | adb4ac751ff7e9d2cbf3a17d9c2191fb0d80e56f | |
parent | 1a88619b72c77b5390076ad703bfa3de4fa0348d (diff) | |
download | libnl-de72910e6b3ec4503f23538682a89c4d444c7a92.zip libnl-de72910e6b3ec4503f23538682a89c4d444c7a92.tar.gz libnl-de72910e6b3ec4503f23538682a89c4d444c7a92.tar.bz2 |
all: Avoid pointer arithmetic on `void *`
ISO C requires that the pointer operand to the binary + operator be to
a complete object type[0].
[0] http://port70.net/~nsz/c/c11/n1570.html#6.5.6p2
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | lib/attr.c | 8 | ||||
-rw-r--r-- | lib/data.c | 2 | ||||
-rw-r--r-- | lib/genl/genl.c | 4 | ||||
-rw-r--r-- | lib/hashtable.c | 2 | ||||
-rw-r--r-- | lib/msg.c | 6 | ||||
-rw-r--r-- | lib/object.c | 2 | ||||
-rw-r--r-- | lib/route/cls/ematch.c | 2 | ||||
-rw-r--r-- | lib/route/cls/ematch/nbyte.c | 2 | ||||
-rw-r--r-- | lib/route/cls/ematch/text.c | 2 | ||||
-rw-r--r-- | lib/route/link/veth.c | 4 | ||||
-rw-r--r-- | lib/route/qdisc/mqprio.c | 2 | ||||
-rw-r--r-- | lib/route/qdisc/netem.c | 8 | ||||
-rw-r--r-- | lib/route/route_obj.c | 4 | ||||
-rw-r--r-- | lib/xfrm/sa.c | 2 | ||||
-rw-r--r-- | lib/xfrm/sp.c | 2 | ||||
-rw-r--r-- | src/nl-tctree-list.c | 6 |
17 files changed, 30 insertions, 29 deletions
diff --git a/Makefile.am b/Makefile.am index 2c01e98..a698e73 100644 --- a/Makefile.am +++ b/Makefile.am @@ -37,6 +37,7 @@ warn_cppflags = \ -Wno-unused-parameter \ -Wno-sign-compare \ -Wno-missing-field-initializers \ + -Wpointer-arith \ $(NULL) ############################################################################### @@ -478,7 +478,7 @@ struct nlattr *nla_reserve(struct nl_msg *msg, int attrtype, int attrlen) NL_DBG(2, "msg %p: attr <%p> %d: Reserved %d (%d) bytes at offset +%td " "nlmsg_len=%d\n", msg, nla, nla->nla_type, nla_total_size(attrlen), attrlen, - (void *) nla - nlmsg_data(msg->nm_nlh), + (char *) nla - (char *) nlmsg_data(msg->nm_nlh), msg->nm_nlh->nlmsg_len); return nla; @@ -514,7 +514,7 @@ int nla_put(struct nl_msg *msg, int attrtype, int datalen, const void *data) memcpy(nla_data(nla), data, datalen); NL_DBG(2, "msg %p: attr <%p> %d: Wrote %d bytes at offset +%td\n", msg, nla, nla->nla_type, datalen, - (void *) nla - nlmsg_data(msg->nm_nlh)); + (char *) nla - (char *) nlmsg_data(msg->nm_nlh)); } return 0; @@ -917,7 +917,7 @@ static int _nest_end(struct nl_msg *msg, struct nlattr *start, int keep_empty) { size_t pad, len; - len = (void *) nlmsg_tail(msg->nm_nlh) - (void *) start; + len = (char *) nlmsg_tail(msg->nm_nlh) - (char *) start; if ( len > USHRT_MAX || (!keep_empty && len == NLA_HDRLEN)) { @@ -996,7 +996,7 @@ void nla_nest_cancel(struct nl_msg *msg, const struct nlattr *attr) { ssize_t len; - len = (void *) nlmsg_tail(msg->nm_nlh) - (void *) attr; + len = (char *) nlmsg_tail(msg->nm_nlh) - (char *) attr; if (len < 0) BUG(); else if (len > 0) { @@ -112,7 +112,7 @@ struct nl_data *nl_data_clone(const struct nl_data *src) int nl_data_append(struct nl_data *data, const void *buf, size_t size) { if (size > 0) { - void *d_data = realloc(data->d_data, data->d_size + size); + char *d_data = realloc(data->d_data, data->d_size + size); if (!d_data) return -NLE_NOMEM; diff --git a/lib/genl/genl.c b/lib/genl/genl.c index 49e82c2..b4f37b5 100644 --- a/lib/genl/genl.c +++ b/lib/genl/genl.c @@ -260,7 +260,7 @@ void *genlmsg_user_hdr(const struct genlmsghdr *gnlh) */ void *genlmsg_user_data(const struct genlmsghdr *gnlh, const int hdrlen) { - return genlmsg_user_hdr(gnlh) + NLMSG_ALIGN(hdrlen); + return (char *) genlmsg_user_hdr(gnlh) + NLMSG_ALIGN(hdrlen); } /** @@ -364,7 +364,7 @@ void *genlmsg_put(struct nl_msg *msg, uint32_t port, uint32_t seq, int family, NL_DBG(2, "msg %p: Added generic netlink header cmd=%d version=%d\n", msg, cmd, version); - return nlmsg_data(nlh) + GENL_HDRLEN; + return (char *) nlmsg_data(nlh) + GENL_HDRLEN; } /** @} */ diff --git a/lib/hashtable.c b/lib/hashtable.c index bf6981e..db4ed8b 100644 --- a/lib/hashtable.c +++ b/lib/hashtable.c @@ -192,7 +192,7 @@ int nl_hash_table_del(nl_hash_table_t *ht, struct nl_object *obj) uint32_t nl_hash(void *k, size_t length, uint32_t initval) { - return(__nl_hash(k, length, initval)); + return(__nl_hash((char *) k, length, initval)); } /** @} */ @@ -410,7 +410,7 @@ struct nl_msg *nlmsg_convert(struct nlmsghdr *hdr) */ void *nlmsg_reserve(struct nl_msg *n, size_t len, int pad) { - void *buf = n->nm_nlh; + char *buf = (char *) n->nm_nlh; size_t nlmsg_len = n->nm_nlh->nlmsg_len; size_t tlen; @@ -838,7 +838,7 @@ static void print_genl_hdr(FILE *ofd, void *start) static void *print_genl_msg(struct nl_msg *msg, FILE *ofd, struct nlmsghdr *hdr, struct nl_cache_ops *ops, int *payloadlen) { - void *data = nlmsg_data(hdr); + char *data = nlmsg_data(hdr); if (*payloadlen < GENL_HDRLEN) return data; @@ -901,7 +901,7 @@ static void dump_attrs(FILE *ofd, struct nlattr *attrs, int attrlen, prefix_line(ofd, prefix); fprintf(ofd, " [PADDING] %d octets\n", padlen); - dump_hex(ofd, nla_data(nla) + alen, + dump_hex(ofd, (char *) nla_data(nla) + alen, padlen, prefix); } } diff --git a/lib/object.c b/lib/object.c index 5ced84b..7ba7465 100644 --- a/lib/object.c +++ b/lib/object.c @@ -132,7 +132,7 @@ struct nl_object *nl_object_clone(struct nl_object *obj) new->ce_mask = obj->ce_mask; if (size) - memcpy((void *)new + doff, (void *)obj + doff, size); + memcpy((char *)new + doff, (char *)obj + doff, size); if (ops->oo_clone) { if (ops->oo_clone(new, obj) < 0) { diff --git a/lib/route/cls/ematch.c b/lib/route/cls/ematch.c index 32f723e..18f5be9 100644 --- a/lib/route/cls/ematch.c +++ b/lib/route/cls/ematch.c @@ -465,7 +465,7 @@ int rtnl_ematch_parse_attr(struct nlattr *attr, struct rtnl_ematch_tree **result } hdr = nla_data(a); - data = nla_data(a) + NLA_ALIGN(sizeof(*hdr)); + data = (char *) nla_data(a) + NLA_ALIGN(sizeof(*hdr)); len = nla_len(a) - NLA_ALIGN(sizeof(*hdr)); NL_DBG(3, "ematch attribute matchid=%u, kind=%u, flags=%u\n", diff --git a/lib/route/cls/ematch/nbyte.c b/lib/route/cls/ematch/nbyte.c index e4216d6..2942c0d 100644 --- a/lib/route/cls/ematch/nbyte.c +++ b/lib/route/cls/ematch/nbyte.c @@ -94,7 +94,7 @@ static int nbyte_parse(struct rtnl_ematch *e, void *data, size_t len) if (!(n->pattern = calloc(1, plen))) return -NLE_NOMEM; - memcpy(n->pattern, data + hdrlen, plen); + memcpy(n->pattern, (char *) data + hdrlen, plen); } return 0; diff --git a/lib/route/cls/ematch/text.c b/lib/route/cls/ematch/text.c index 12a1e74..af2e373 100644 --- a/lib/route/cls/ematch/text.c +++ b/lib/route/cls/ematch/text.c @@ -117,7 +117,7 @@ static int text_parse(struct rtnl_ematch *e, void *data, size_t len) if (!(t->pattern = calloc(1, t->cfg.pattern_len))) return -NLE_NOMEM; - memcpy(t->pattern, data + hdrlen, t->cfg.pattern_len); + memcpy(t->pattern, (char *) data + hdrlen, t->cfg.pattern_len); } return 0; diff --git a/lib/route/link/veth.c b/lib/route/link/veth.c index bd30041..15859de 100644 --- a/lib/route/link/veth.c +++ b/lib/route/link/veth.c @@ -63,8 +63,8 @@ static int veth_parse(struct rtnl_link *link, struct nlattr *data, peer->l_index = ifi->ifi_index; peer->l_flags = ifi->ifi_flags; peer->l_change = ifi->ifi_change; - err = nla_parse(peer_tb, IFLA_MAX, - nla_data(nla_peer) + sizeof(struct ifinfomsg), + err = nla_parse(peer_tb, IFLA_MAX, (struct nlattr *) + ((char *) nla_data(nla_peer) + sizeof(struct ifinfomsg)), nla_len(nla_peer) - sizeof(struct ifinfomsg), rtln_link_policy); if (err < 0) diff --git a/lib/route/qdisc/mqprio.c b/lib/route/qdisc/mqprio.c index ea26e00..0d07247 100644 --- a/lib/route/qdisc/mqprio.c +++ b/lib/route/qdisc/mqprio.c @@ -63,7 +63,7 @@ static int mqprio_msg_parser(struct rtnl_tc *tc, void *data) struct nlattr *tb[TCA_MQPRIO_MAX + 1]; err = nla_parse(tb, TCA_MQPRIO_MAX, (struct nlattr *) - (tc->tc_opts->d_data + NLA_ALIGN(sizeof(*qopt))), + ((char *) tc->tc_opts->d_data + NLA_ALIGN(sizeof(*qopt))), len, mqprio_policy); if (err < 0) return err; diff --git a/lib/route/qdisc/netem.c b/lib/route/qdisc/netem.c index 2077408..17dee3b 100644 --- a/lib/route/qdisc/netem.c +++ b/lib/route/qdisc/netem.c @@ -76,7 +76,7 @@ static int netem_msg_parser(struct rtnl_tc *tc, void *data) struct nlattr *tb[TCA_NETEM_MAX+1]; err = nla_parse(tb, TCA_NETEM_MAX, (struct nlattr *) - (tc->tc_opts->d_data + sizeof(*opts)), + ((char *) tc->tc_opts->d_data + sizeof(*opts)), len, netem_policy); if (err < 0) { free(netem); @@ -323,14 +323,14 @@ static int netem_msg_fill_raw(struct rtnl_tc *tc, void *data, * remainder of the message. That's just the way that sch_netem expects it. * Maybe there's a more succinct way to do this at a higher level. */ - head = (struct nlattr *)(NLMSG_DATA(msg->nm_nlh) + + head = (struct nlattr *)(((char *) NLMSG_DATA(msg->nm_nlh)) + NLMSG_LENGTH(sizeof(struct tcmsg)) - NLMSG_ALIGNTO); - tail = (struct nlattr *)(((void *) (msg->nm_nlh)) + + tail = (struct nlattr *)(((char *) (msg->nm_nlh)) + NLMSG_ALIGN(msg->nm_nlh->nlmsg_len)); old_len = head->nla_len; - head->nla_len = (void *)tail - (void *)head; + head->nla_len = (char *)tail - (char *)head; msg->nm_nlh->nlmsg_len += (head->nla_len - old_len); return err; diff --git a/lib/route/route_obj.c b/lib/route/route_obj.c index 950b351..bacabe8 100644 --- a/lib/route/route_obj.c +++ b/lib/route/route_obj.c @@ -1472,8 +1472,8 @@ int rtnl_route_build_msg(struct nl_msg *msg, struct rtnl_route *route) nh_encap_build_msg(msg, nh->rtnh_encap) < 0) goto nla_put_failure; - rtnh->rtnh_len = nlmsg_tail(msg->nm_nlh) - - (void *) rtnh; + rtnh->rtnh_len = (char *) nlmsg_tail(msg->nm_nlh) - + (char *) rtnh; } nla_nest_end(msg, multipath); diff --git a/lib/xfrm/sa.c b/lib/xfrm/sa.c index b469b0a..48265ba 100644 --- a/lib/xfrm/sa.c +++ b/lib/xfrm/sa.c @@ -682,7 +682,7 @@ int xfrmnl_sa_parse(struct nlmsghdr *n, struct xfrmnl_sa **result) } else if (n->nlmsg_type == XFRM_MSG_DELSA) { - sa_info = (struct xfrm_usersa_info*)(nlmsg_data(n) + sizeof (struct xfrm_usersa_id) + NLA_HDRLEN); + sa_info = (struct xfrm_usersa_info*)((char *)nlmsg_data(n) + sizeof (struct xfrm_usersa_id) + NLA_HDRLEN); } else { diff --git a/lib/xfrm/sp.c b/lib/xfrm/sp.c index fd7585c..99b6a4c 100644 --- a/lib/xfrm/sp.c +++ b/lib/xfrm/sp.c @@ -532,7 +532,7 @@ int xfrmnl_sp_parse(struct nlmsghdr *n, struct xfrmnl_sp **result) sp->ce_msgtype = n->nlmsg_type; if (n->nlmsg_type == XFRM_MSG_DELPOLICY) { - sp_info = (struct xfrm_userpolicy_info*)(nlmsg_data(n) + sizeof (struct xfrm_userpolicy_id) + NLA_HDRLEN); + sp_info = (struct xfrm_userpolicy_info*)((char *)nlmsg_data(n) + sizeof (struct xfrm_userpolicy_id) + NLA_HDRLEN); } else { diff --git a/src/nl-tctree-list.c b/src/nl-tctree-list.c index c80093b..9e03038 100644 --- a/src/nl-tctree-list.c +++ b/src/nl-tctree-list.c @@ -53,9 +53,9 @@ static void print_class(struct nl_object *obj, void *arg) leaf = rtnl_class_leaf_qdisc(class, qdisc_cache); if (leaf) - print_qdisc((struct nl_object *) leaf, arg + 2); + print_qdisc((struct nl_object *) leaf, (char *) arg + 2); - print_tc_childs(TC_CAST(class), arg + 2); + print_tc_childs(TC_CAST(class), (char *) arg + 2); if (rtnl_cls_alloc_cache(sock, ifindex, parent, &cls_cache) < 0) return; @@ -88,7 +88,7 @@ static void print_qdisc(struct nl_object *obj, void *arg) params.dp_prefix = (int)(long) arg; nl_object_dump(obj, ¶ms); - print_tc_childs(TC_CAST(qdisc), arg + 2); + print_tc_childs(TC_CAST(qdisc), (char *) arg + 2); if (rtnl_cls_alloc_cache(sock, ifindex, parent, &cls_cache) < 0) return; |