Skip to content

Commit 9397e35

Browse files
committed
[nrf fromtree] samples: net: echo_client: Fix build warning with IPv6 disabled
Building the sample with IPv4 only gives the following warning: tcp.c:99:37: warning: array subscript 'struct sockaddr[0]' is partly outside array bounds of 'struct sockaddr_in[1]' [-Warray-bounds] data->tcp.sock = socket(addr->sa_family, SOCK_STREAM, IPPROTO_TCP); This doesn't really seem like a valid one, but to get rid of it workaround by specifying address family explicitly. Signed-off-by: Robert Lubos <[email protected]> (cherry picked from commit 0623b23)
1 parent da3f9a2 commit 9397e35

File tree

2 files changed

+18
-16
lines changed

2 files changed

+18
-16
lines changed

samples/net/sockets/echo_client/src/tcp.c

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -87,16 +87,16 @@ static int compare_tcp_data(struct data *data, const char *buf, uint32_t receive
8787
return 0;
8888
}
8989

90-
static int start_tcp_proto(struct data *data, struct sockaddr *addr,
91-
socklen_t addrlen)
90+
static int start_tcp_proto(struct data *data, sa_family_t family,
91+
struct sockaddr *addr, socklen_t addrlen)
9292
{
9393
int optval;
9494
int ret;
9595

9696
#if defined(CONFIG_NET_SOCKETS_SOCKOPT_TLS)
97-
data->tcp.sock = socket(addr->sa_family, SOCK_STREAM, IPPROTO_TLS_1_2);
97+
data->tcp.sock = socket(family, SOCK_STREAM, IPPROTO_TLS_1_2);
9898
#else
99-
data->tcp.sock = socket(addr->sa_family, SOCK_STREAM, IPPROTO_TCP);
99+
data->tcp.sock = socket(family, SOCK_STREAM, IPPROTO_TCP);
100100
#endif
101101
if (data->tcp.sock < 0) {
102102
LOG_ERR("Failed to create TCP socket (%s): %d", data->proto,
@@ -108,7 +108,7 @@ static int start_tcp_proto(struct data *data, struct sockaddr *addr,
108108
struct sockaddr proxy_addr;
109109
socklen_t proxy_addrlen;
110110

111-
if (addr->sa_family == AF_INET) {
111+
if (family == AF_INET) {
112112
struct sockaddr_in *proxy4 =
113113
(struct sockaddr_in *)&proxy_addr;
114114

@@ -117,7 +117,7 @@ static int start_tcp_proto(struct data *data, struct sockaddr *addr,
117117
inet_pton(AF_INET, SOCKS5_PROXY_V4_ADDR,
118118
&proxy4->sin_addr);
119119
proxy_addrlen = sizeof(struct sockaddr_in);
120-
} else if (addr->sa_family == AF_INET6) {
120+
} else if (family == AF_INET6) {
121121
struct sockaddr_in6 *proxy6 =
122122
(struct sockaddr_in6 *)&proxy_addr;
123123

@@ -163,7 +163,7 @@ static int start_tcp_proto(struct data *data, struct sockaddr *addr,
163163
#endif
164164

165165
/* Prefer IPv6 temporary addresses */
166-
if (addr->sa_family == AF_INET6) {
166+
if (family == AF_INET6) {
167167
optval = IPV6_PREFER_SRC_TMP;
168168
(void)setsockopt(data->tcp.sock, IPPROTO_IPV6,
169169
IPV6_ADDR_PREFERENCES,
@@ -242,7 +242,7 @@ int start_tcp(void)
242242
inet_pton(AF_INET6, CONFIG_NET_CONFIG_PEER_IPV6_ADDR,
243243
&addr6.sin6_addr);
244244

245-
ret = start_tcp_proto(&conf.ipv6,
245+
ret = start_tcp_proto(&conf.ipv6, AF_INET6,
246246
(struct sockaddr *)&addr6,
247247
sizeof(addr6));
248248
if (ret < 0) {
@@ -256,7 +256,8 @@ int start_tcp(void)
256256
inet_pton(AF_INET, CONFIG_NET_CONFIG_PEER_IPV4_ADDR,
257257
&addr4.sin_addr);
258258

259-
ret = start_tcp_proto(&conf.ipv4, (struct sockaddr *)&addr4,
259+
ret = start_tcp_proto(&conf.ipv4, AF_INET,
260+
(struct sockaddr *)&addr4,
260261
sizeof(addr4));
261262
if (ret < 0) {
262263
return ret;

samples/net/sockets/echo_client/src/udp.c

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -190,16 +190,16 @@ static void wait_transmit(struct k_timer *timer)
190190
k_poll_signal_raise(&ctrl->tx_signal, 0);
191191
}
192192

193-
static int start_udp_proto(struct data *data, struct sockaddr *addr,
194-
socklen_t addrlen)
193+
static int start_udp_proto(struct data *data, sa_family_t family,
194+
struct sockaddr *addr, socklen_t addrlen)
195195
{
196196
int optval;
197197
int ret;
198198

199199
#if defined(CONFIG_NET_SOCKETS_SOCKOPT_TLS)
200-
data->udp.sock = socket(addr->sa_family, SOCK_DGRAM, IPPROTO_DTLS_1_2);
200+
data->udp.sock = socket(family, SOCK_DGRAM, IPPROTO_DTLS_1_2);
201201
#else
202-
data->udp.sock = socket(addr->sa_family, SOCK_DGRAM, IPPROTO_UDP);
202+
data->udp.sock = socket(family, SOCK_DGRAM, IPPROTO_UDP);
203203
#endif
204204
if (data->udp.sock < 0) {
205205
LOG_ERR("Failed to create UDP socket (%s): %d", data->proto,
@@ -233,7 +233,7 @@ static int start_udp_proto(struct data *data, struct sockaddr *addr,
233233
#endif
234234

235235
/* Prefer IPv6 temporary addresses */
236-
if (addr->sa_family == AF_INET6) {
236+
if (family == AF_INET6) {
237237
optval = IPV6_PREFER_SRC_TMP;
238238
(void)setsockopt(data->udp.sock, IPPROTO_IPV6,
239239
IPV6_ADDR_PREFERENCES,
@@ -312,7 +312,7 @@ int start_udp(void)
312312
inet_pton(AF_INET6, CONFIG_NET_CONFIG_PEER_IPV6_ADDR,
313313
&addr6.sin6_addr);
314314

315-
ret = start_udp_proto(&conf.ipv6,
315+
ret = start_udp_proto(&conf.ipv6, AF_INET6,
316316
(struct sockaddr *)&addr6,
317317
sizeof(addr6));
318318
if (ret < 0) {
@@ -326,7 +326,8 @@ int start_udp(void)
326326
inet_pton(AF_INET, CONFIG_NET_CONFIG_PEER_IPV4_ADDR,
327327
&addr4.sin_addr);
328328

329-
ret = start_udp_proto(&conf.ipv4, (struct sockaddr *)&addr4,
329+
ret = start_udp_proto(&conf.ipv4, AF_INET,
330+
(struct sockaddr *)&addr4,
330331
sizeof(addr4));
331332
if (ret < 0) {
332333
return ret;

0 commit comments

Comments
 (0)