0002-Avoid-pointer-arithmetic-on-void.patch (8174B)
- From a5c387d23c3309296d852e6f7fae8eb6ca99bd47 Mon Sep 17 00:00:00 2001
- From: Michael Forney <mforney@mforney.org>
- Date: Tue, 12 Mar 2019 19:12:31 -0700
- Subject: [PATCH] Avoid pointer arithmetic on `void *`
- ---
- include/libnetlink.h | 4 ++--
- ip/ipfou.c | 2 +-
- ip/ipila.c | 2 +-
- ip/ipioam6.c | 3 ++-
- ip/ipl2tp.c | 2 +-
- ip/ipmacsec.c | 2 +-
- ip/ipmptcp.c | 6 +++---
- ip/ipseg6.c | 2 +-
- ip/tcp_metrics.c | 2 +-
- lib/libnetlink.c | 12 ++++++------
- lib/utils.c | 2 +-
- 11 files changed, 20 insertions(+), 19 deletions(-)
- diff --git a/include/libnetlink.h b/include/libnetlink.h
- index ad7e7127..09145d77 100644
- --- a/include/libnetlink.h
- +++ b/include/libnetlink.h
- @@ -219,7 +219,7 @@ struct rtattr *rta_nest(struct rtattr *rta, int maxlen, int type);
- int rta_nest_end(struct rtattr *rta, struct rtattr *nest);
- #define RTA_TAIL(rta) \
- - ((struct rtattr *) (((void *) (rta)) + \
- + ((struct rtattr *) (((char *) (rta)) + \
- RTA_ALIGN((rta)->rta_len)))
- #define parse_rtattr_nested(tb, max, rta) \
- @@ -287,7 +287,7 @@ int rtnl_from_file(FILE *, rtnl_listen_filter_t handler,
- void *jarg);
- #define NLMSG_TAIL(nmsg) \
- - ((struct rtattr *) (((void *) (nmsg)) + NLMSG_ALIGN((nmsg)->nlmsg_len)))
- + ((struct rtattr *) (((char *) (nmsg)) + NLMSG_ALIGN((nmsg)->nlmsg_len)))
- #ifndef IFA_RTA
- #define IFA_RTA(r) \
- diff --git a/ip/ipfou.c b/ip/ipfou.c
- index 760cfee2..8b9dde00 100644
- --- a/ip/ipfou.c
- +++ b/ip/ipfou.c
- @@ -228,7 +228,7 @@ static int print_fou_mapping(struct nlmsghdr *n, void *arg)
- return -1;
- ghdr = NLMSG_DATA(n);
- - parse_rtattr(tb, FOU_ATTR_MAX, (void *) ghdr + GENL_HDRLEN, len);
- + parse_rtattr(tb, FOU_ATTR_MAX, (struct rtattr *)((char *)ghdr + GENL_HDRLEN), len);
- open_json_object(NULL);
- if (tb[FOU_ATTR_PORT])
- diff --git a/ip/ipila.c b/ip/ipila.c
- index f4387e03..c12aa23f 100644
- --- a/ip/ipila.c
- +++ b/ip/ipila.c
- @@ -97,7 +97,7 @@ static int print_ila_mapping(struct nlmsghdr *n, void *arg)
- return -1;
- ghdr = NLMSG_DATA(n);
- - parse_rtattr(tb, ILA_ATTR_MAX, (void *) ghdr + GENL_HDRLEN, len);
- + parse_rtattr(tb, ILA_ATTR_MAX, (struct rtattr *)((char *)ghdr + GENL_HDRLEN), len);
- open_json_object(NULL);
- print_ila_locid("locator_match", ILA_ATTR_LOCATOR_MATCH, tb);
- diff --git a/ip/ipioam6.c b/ip/ipioam6.c
- index b63d7d5c..c7c9aceb 100644
- --- a/ip/ipioam6.c
- +++ b/ip/ipioam6.c
- @@ -110,7 +110,8 @@ static int process_msg(struct nlmsghdr *n, void *arg)
- return -1;
- ghdr = NLMSG_DATA(n);
- - parse_rtattr(attrs, IOAM6_ATTR_MAX, (void *)ghdr + GENL_HDRLEN, len);
- + parse_rtattr(attrs, IOAM6_ATTR_MAX,
- + (struct rtattr *)((char *)ghdr + GENL_HDRLEN), len);
- open_json_object(NULL);
- switch (ghdr->cmd) {
- diff --git a/ip/ipl2tp.c b/ip/ipl2tp.c
- index 9d1e566c..76ba20c0 100644
- --- a/ip/ipl2tp.c
- +++ b/ip/ipl2tp.c
- @@ -341,7 +341,7 @@ static int get_response(struct nlmsghdr *n, void *arg)
- if (len < 0)
- return -1;
- - parse_rtattr(attrs, L2TP_ATTR_MAX, (void *)ghdr + GENL_HDRLEN, len);
- + parse_rtattr(attrs, L2TP_ATTR_MAX, (struct rtattr *)((char *)ghdr + GENL_HDRLEN), len);
- if (attrs[L2TP_ATTR_PW_TYPE])
- p->pw_type = rta_getattr_u16(attrs[L2TP_ATTR_PW_TYPE]);
- diff --git a/ip/ipmacsec.c b/ip/ipmacsec.c
- index fc4c8631..3e65e11f 100644
- --- a/ip/ipmacsec.c
- +++ b/ip/ipmacsec.c
- @@ -1083,7 +1083,7 @@ static int process(struct nlmsghdr *n, void *arg)
- if (ghdr->cmd != MACSEC_CMD_GET_TXSC)
- return 0;
- - parse_rtattr(attrs, MACSEC_ATTR_MAX, (void *) ghdr + GENL_HDRLEN, len);
- + parse_rtattr(attrs, MACSEC_ATTR_MAX, (struct rtattr *)((char *)ghdr + GENL_HDRLEN), len);
- if (!validate_dump(attrs)) {
- fprintf(stderr, "incomplete dump message\n");
- return -1;
- diff --git a/ip/ipmptcp.c b/ip/ipmptcp.c
- index 9847f95b..d37f1269 100644
- --- a/ip/ipmptcp.c
- +++ b/ip/ipmptcp.c
- @@ -286,7 +286,7 @@ static int print_mptcp_addr(struct nlmsghdr *n, void *arg)
- return -1;
- ghdr = NLMSG_DATA(n);
- - parse_rtattr_flags(tb, MPTCP_PM_ATTR_MAX, (void *) ghdr + GENL_HDRLEN,
- + parse_rtattr_flags(tb, MPTCP_PM_ATTR_MAX, (struct rtattr *)((char *)ghdr + GENL_HDRLEN),
- len, NLA_F_NESTED);
- addrinfo = tb[MPTCP_PM_ATTR_ADDR];
- if (!addrinfo)
- @@ -402,7 +402,7 @@ static int print_mptcp_limit(struct nlmsghdr *n, void *arg)
- return -1;
- ghdr = NLMSG_DATA(n);
- - parse_rtattr(tb, MPTCP_PM_ATTR_MAX, (void *) ghdr + GENL_HDRLEN, len);
- + parse_rtattr(tb, MPTCP_PM_ATTR_MAX, (struct rtattr *)((char *)ghdr + GENL_HDRLEN), len);
- open_json_object(NULL);
- if (tb[MPTCP_PM_ATTR_RCV_ADD_ADDRS]) {
- @@ -497,7 +497,7 @@ static int mptcp_monitor_msg(struct rtnl_ctrl_data *ctrl,
- printf("[%16s]", event_to_str[ghdr->cmd]);
- - parse_rtattr(tb, MPTCP_ATTR_MAX, (void *) ghdr + GENL_HDRLEN, len);
- + parse_rtattr(tb, MPTCP_ATTR_MAX, (struct rtattr *) ((char *) ghdr + GENL_HDRLEN), len);
- if (tb[MPTCP_ATTR_TOKEN])
- printf(" token=%08x", rta_getattr_u32(tb[MPTCP_ATTR_TOKEN]));
- diff --git a/ip/ipseg6.c b/ip/ipseg6.c
- index 305b8961..4103a1c6 100644
- --- a/ip/ipseg6.c
- +++ b/ip/ipseg6.c
- @@ -112,7 +112,7 @@ static int process_msg(struct nlmsghdr *n, void *arg)
- ghdr = NLMSG_DATA(n);
- - parse_rtattr(attrs, SEG6_ATTR_MAX, (void *)ghdr + GENL_HDRLEN, len);
- + parse_rtattr(attrs, SEG6_ATTR_MAX, (struct rtattr *)((char *)ghdr + GENL_HDRLEN), len);
- open_json_object(NULL);
- switch (ghdr->cmd) {
- diff --git a/ip/tcp_metrics.c b/ip/tcp_metrics.c
- index 9c8fb072..f451c8f2 100644
- --- a/ip/tcp_metrics.c
- +++ b/ip/tcp_metrics.c
- @@ -175,7 +175,7 @@ static int process_msg(struct nlmsghdr *n, void *arg)
- if (ghdr->cmd != TCP_METRICS_CMD_GET)
- return 0;
- - parse_rtattr(attrs, TCP_METRICS_ATTR_MAX, (void *) ghdr + GENL_HDRLEN,
- + parse_rtattr(attrs, TCP_METRICS_ATTR_MAX, (struct rtattr *)((char *)ghdr + GENL_HDRLEN),
- len);
- if (attrs[TCP_METRICS_ATTR_ADDR_IPV4]) {
- diff --git a/lib/libnetlink.c b/lib/libnetlink.c
- index 01648229..80adabf4 100644
- --- a/lib/libnetlink.c
- +++ b/lib/libnetlink.c
- @@ -1396,7 +1396,7 @@ int addraw_l(struct nlmsghdr *n, int maxlen, const void *data, int len)
- }
- memcpy(NLMSG_TAIL(n), data, len);
- - memset((void *) NLMSG_TAIL(n) + len, 0, NLMSG_ALIGN(len) - len);
- + memset((char *) NLMSG_TAIL(n) + len, 0, NLMSG_ALIGN(len) - len);
- n->nlmsg_len = NLMSG_ALIGN(n->nlmsg_len) + NLMSG_ALIGN(len);
- return 0;
- }
- @@ -1411,7 +1411,7 @@ struct rtattr *addattr_nest(struct nlmsghdr *n, int maxlen, int type)
- int addattr_nest_end(struct nlmsghdr *n, struct rtattr *nest)
- {
- - nest->rta_len = (void *)NLMSG_TAIL(n) - (void *)nest;
- + nest->rta_len = (char *)NLMSG_TAIL(n) - (char *)nest;
- return n->nlmsg_len;
- }
- @@ -1427,9 +1427,9 @@ struct rtattr *addattr_nest_compat(struct nlmsghdr *n, int maxlen, int type,
- int addattr_nest_compat_end(struct nlmsghdr *n, struct rtattr *start)
- {
- - struct rtattr *nest = (void *)start + NLMSG_ALIGN(start->rta_len);
- + struct rtattr *nest = (struct rtattr *)((char *)start + NLMSG_ALIGN(start->rta_len));
- - start->rta_len = (void *)NLMSG_TAIL(n) - (void *)start;
- + start->rta_len = (char *)NLMSG_TAIL(n) - (char *)start;
- addattr_nest_end(n, nest);
- return n->nlmsg_len;
- }
- @@ -1501,7 +1501,7 @@ struct rtattr *rta_nest(struct rtattr *rta, int maxlen, int type)
- int rta_nest_end(struct rtattr *rta, struct rtattr *nest)
- {
- - nest->rta_len = (void *)RTA_TAIL(rta) - (void *)nest;
- + nest->rta_len = (char *)RTA_TAIL(rta) - (char *)nest;
- return rta->rta_len;
- }
- @@ -1550,7 +1550,7 @@ int __parse_rtattr_nested_compat(struct rtattr *tb[], int max,
- if (RTA_PAYLOAD(rta) < len)
- return -1;
- if (RTA_PAYLOAD(rta) >= RTA_ALIGN(len) + sizeof(struct rtattr)) {
- - rta = RTA_DATA(rta) + RTA_ALIGN(len);
- + rta = (struct rtattr *)((char *)RTA_DATA(rta) + RTA_ALIGN(len));
- return parse_rtattr_nested(tb, max, rta);
- }
- memset(tb, 0, sizeof(struct rtattr *) * (max + 1));
- diff --git a/lib/utils.c b/lib/utils.c
- index 6c1c1a8d..040b935c 100644
- --- a/lib/utils.c
- +++ b/lib/utils.c
- @@ -1543,7 +1543,7 @@ int get_rtnl_link_stats_rta(struct rtnl_link_stats64 *stats64,
- len = RTA_PAYLOAD(rta);
- if (len < size)
- - memset(s + len, 0, size - len);
- + memset((char *)s + len, 0, size - len);
- else
- len = size;
- --
- 2.44.0