mirror of
https://github.com/oasislinux/oasis.git
synced 2026-05-17 17:33:30 +02:00
233 lines
8.0 KiB
Diff
233 lines
8.0 KiB
Diff
From f322d5077bb45dffaa384be4c78e4cf218767bf5 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 9e4cc101..6925de43 100644
|
|
--- a/include/libnetlink.h
|
|
+++ b/include/libnetlink.h
|
|
@@ -206,7 +206,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) \
|
|
@@ -270,7 +270,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 9c697770..539e7ab7 100644
|
|
--- a/ip/ipfou.c
|
|
+++ b/ip/ipfou.c
|
|
@@ -232,7 +232,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 475c35b5..0540d1d9 100644
|
|
--- a/ip/ipila.c
|
|
+++ b/ip/ipila.c
|
|
@@ -96,7 +96,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 f090390f..edbe0f2f 100644
|
|
--- a/ip/ipl2tp.c
|
|
+++ b/ip/ipl2tp.c
|
|
@@ -345,7 +345,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 bf48e8b5..eecb7e48 100644
|
|
--- a/ip/ipmacsec.c
|
|
+++ b/ip/ipmacsec.c
|
|
@@ -1001,7 +1001,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 85700444..bbdd06e7 100644
|
|
--- a/ip/ipmptcp.c
|
|
+++ b/ip/ipmptcp.c
|
|
@@ -256,7 +256,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)
|
|
@@ -371,7 +371,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]) {
|
|
@@ -460,7 +460,7 @@ static int mptcp_monitor_msg(struct rtnl_ctrl_data *ctrl,
|
|
|
|
printf("[%14s]", 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);
|
|
|
|
printf(" token=%08x", rta_getattr_u32(tb[MPTCP_ATTR_TOKEN]));
|
|
|
|
diff --git a/ip/ipseg6.c b/ip/ipseg6.c
|
|
index 4f541ae4..b9baf38c 100644
|
|
--- a/ip/ipseg6.c
|
|
+++ b/ip/ipseg6.c
|
|
@@ -115,7 +115,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 acbd745a..051ddc63 100644
|
|
--- a/ip/tcp_metrics.c
|
|
+++ b/ip/tcp_metrics.c
|
|
@@ -178,7 +178,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 7e977a67..7068750f 100644
|
|
--- a/lib/libnetlink.c
|
|
+++ b/lib/libnetlink.c
|
|
@@ -1365,7 +1365,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;
|
|
}
|
|
@@ -1380,7 +1380,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;
|
|
}
|
|
|
|
@@ -1396,9 +1396,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;
|
|
}
|
|
@@ -1470,7 +1470,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;
|
|
}
|
|
@@ -1519,7 +1519,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 53d31006..0f683f9c 100644
|
|
--- a/lib/utils.c
|
|
+++ b/lib/utils.c
|
|
@@ -1514,7 +1514,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.34.1
|
|
|