1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
From d580bcc2f406db4980013e665441258fd42a4c2a 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/ipseg6.c | 2 +-
ip/tcp_metrics.c | 2 +-
lib/libnetlink.c | 12 ++++++------
lib/utils.c | 2 +-
7 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/include/libnetlink.h b/include/libnetlink.h
index e27516f7..253d2141 100644
--- a/include/libnetlink.h
+++ b/include/libnetlink.h
@@ -169,7 +169,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) \
@@ -233,7 +233,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 ea126b08..f24586d4 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 739ee4e1..50c8c300 100644
--- a/ip/ipila.c
+++ b/ip/ipila.c
@@ -95,7 +95,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/ipseg6.c b/ip/ipseg6.c
index 56a76996..1c3c3bf5 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 e02d6294..48b19501 100644
--- a/lib/libnetlink.c
+++ b/lib/libnetlink.c
@@ -1280,7 +1280,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;
}
@@ -1295,7 +1295,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;
}
@@ -1311,9 +1311,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;
}
@@ -1385,7 +1385,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;
}
@@ -1434,7 +1434,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 c6f19ce1..d02bc32d 100644
--- a/lib/utils.c
+++ b/lib/utils.c
@@ -1532,7 +1532,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.26.0
|