Skip to content

Commit 7e0b68a

Browse files
committed
dco_freebsd.c: fix integer warnings
Fix all nvlist_get_number() related warnings by explicitly casting - these are all messages coming from DCO, which we trust in this (nothing will crash if a number is truncated, just "things will not work correctly"). Remove #pragmas. Change-Id: Ief19ba87b0832baa6530ea8bf039d85115434e3e Signed-off-by: Gert Doering <[email protected]> Acked-by: Frank Lichtenheld <[email protected]> Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1361 Message-Id: <[email protected]> URL: https://www.mail-archive.com/[email protected]/msg34256.html Signed-off-by: Gert Doering <[email protected]>
1 parent 7fe5cc0 commit 7e0b68a

File tree

1 file changed

+11
-17
lines changed

1 file changed

+11
-17
lines changed

src/openvpn/dco_freebsd.c

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,6 @@ sockaddr_to_nvlist(const struct sockaddr *sa)
7272
return (nvl);
7373
}
7474

75-
#if defined(__GNUC__) || defined(__clang__)
76-
#pragma GCC diagnostic push
77-
#pragma GCC diagnostic ignored "-Wconversion"
78-
#endif
79-
8075
static bool
8176
nvlist_to_sockaddr(const nvlist_t *nvl, struct sockaddr_storage *ss)
8277
{
@@ -93,7 +88,7 @@ nvlist_to_sockaddr(const nvlist_t *nvl, struct sockaddr_storage *ss)
9388
return (false);
9489
}
9590

96-
ss->ss_family = nvlist_get_number(nvl, "af");
91+
ss->ss_family = (unsigned char)nvlist_get_number(nvl, "af");
9792

9893
switch (ss->ss_family)
9994
{
@@ -107,7 +102,7 @@ nvlist_to_sockaddr(const nvlist_t *nvl, struct sockaddr_storage *ss)
107102
data = nvlist_get_binary(nvl, "address", &len);
108103
ASSERT(len == sizeof(in->sin_addr));
109104
memcpy(&in->sin_addr, data, sizeof(in->sin_addr));
110-
in->sin_port = nvlist_get_number(nvl, "port");
105+
in->sin_port = (in_port_t)nvlist_get_number(nvl, "port");
111106
break;
112107
}
113108

@@ -121,11 +116,11 @@ nvlist_to_sockaddr(const nvlist_t *nvl, struct sockaddr_storage *ss)
121116
data = nvlist_get_binary(nvl, "address", &len);
122117
ASSERT(len == sizeof(in6->sin6_addr));
123118
memcpy(&in6->sin6_addr, data, sizeof(in6->sin6_addr));
124-
in6->sin6_port = nvlist_get_number(nvl, "port");
119+
in6->sin6_port = (in_port_t)nvlist_get_number(nvl, "port");
125120

126121
if (nvlist_exists_number(nvl, "scopeid"))
127122
{
128-
in6->sin6_scope_id = nvlist_get_number(nvl, "scopeid");
123+
in6->sin6_scope_id = (uint32_t)nvlist_get_number(nvl, "scopeid");
129124
}
130125
break;
131126
}
@@ -614,9 +609,12 @@ dco_do_read(dco_context_t *dco)
614609
return -EINVAL;
615610
}
616611

617-
dco->dco_message_peer_id = nvlist_get_number(nvl, "peerid");
612+
/* dco_message_peer_id is signed int, because other parts of the
613+
* code treat "-1" as "this is a message not specific to one peer"
614+
*/
615+
dco->dco_message_peer_id = (int)nvlist_get_number(nvl, "peerid");
618616

619-
type = nvlist_get_number(nvl, "notification");
617+
type = (enum ovpn_notif_type)nvlist_get_number(nvl, "notification");
620618

621619
switch (type)
622620
{
@@ -625,7 +623,7 @@ dco_do_read(dco_context_t *dco)
625623

626624
if (nvlist_exists_number(nvl, "del_reason"))
627625
{
628-
uint32_t reason = nvlist_get_number(nvl, "del_reason");
626+
uint32_t reason = (uint32_t)nvlist_get_number(nvl, "del_reason");
629627
if (reason == OVPN_DEL_REASON_TIMEOUT)
630628
{
631629
dco->dco_del_peer_reason = OVPN_DEL_PEER_REASON_EXPIRED;
@@ -869,7 +867,7 @@ dco_get_peer_stats_multi(dco_context_t *dco, const bool raise_sigusr1_on_err)
869867
for (size_t i = 0; i < npeers; i++)
870868
{
871869
const nvlist_t *peer = nvpeers[i];
872-
uint32_t peerid = nvlist_get_number(peer, "peerid");
870+
uint32_t peerid = (uint32_t)nvlist_get_number(peer, "peerid");
873871
const nvlist_t *bytes = nvlist_get_nvlist(peer, "bytes");
874872

875873
/* we can end here in p2mp mode, or in p2p mode via
@@ -890,10 +888,6 @@ dco_get_peer_stats_multi(dco_context_t *dco, const bool raise_sigusr1_on_err)
890888
return 0;
891889
}
892890

893-
#if defined(__GNUC__) || defined(__clang__)
894-
#pragma GCC diagnostic pop
895-
#endif
896-
897891
/* get stats for a single peer
898892
* we can get here for "the peer stats" in p2p client mode, or by
899893
* being queried for a particular peer in p2mp mode, for --inactive

0 commit comments

Comments
 (0)