Attention is currently required from: plaisthos, ralf_lici.
Hello ordex, ralf_lici,
I'd like you to reexamine a change. Please visit
http://gerrit.openvpn.net/c/openvpn/+/1547?usp=email
to look at the new patch set (#2).
The following approvals got outdated and were removed:
Code-Review+2 by ralf_lici
Change subject: DCO Linux: Fix setting DCO ifmode failing on big endian archs
......................................................................
DCO Linux: Fix setting DCO ifmode failing on big endian archs
The problem is that SITNL_ADDATTR is not forcing type safety and on
big endian architcutre passing a smaller size than the underlying
integer type of data causes only the more significant byte(s) to be passed
instead.
A proper fix would be to add specific methods for common integer types like
SITNL_ADDATTR_u8, SITNL_ADDATTR_u16, SITNL_ADDATTR_u32 like netlink library
does with NLA_PUT_U32, NLA_PUT_U16, NLA_PUT_U8.
Change-Id: I560f45fb0011180be8ca2b0e7fbc63030fa10f35
Signed-off-by: Arne Schwabe <[email protected]>
---
M src/openvpn/networking_sitnl.c
1 file changed, 9 insertions(+), 1 deletion(-)
git pull ssh://gerrit.openvpn.net:29418/openvpn refs/changes/47/1547/2
diff --git a/src/openvpn/networking_sitnl.c b/src/openvpn/networking_sitnl.c
index a5b2905..ad7edef 100644
--- a/src/openvpn/networking_sitnl.c
+++ b/src/openvpn/networking_sitnl.c
@@ -1337,7 +1337,15 @@
{
dco_context_t *dco = arg;
struct rtattr *data = SITNL_NEST(&req.n, sizeof(req), IFLA_INFO_DATA);
- SITNL_ADDATTR(&req.n, sizeof(req), IFLA_OVPN_MODE, &dco->ifmode,
sizeof(uint8_t));
+
+ /* the netlink format is uint8_t for this and using something
+ * other than uint8_t here (enum underlying type is undefined but
+ * commonly int) causes the values to be 0 when passed
+ * on big endian arch as we only take the (biggest endian) byte
+ * directly at the address
+ */
+ uint8_t ifmode = (uint8_t)dco->ifmode;
+ SITNL_ADDATTR(&req.n, sizeof(req), IFLA_OVPN_MODE, &ifmode,
sizeof(uint8_t));
SITNL_NEST_END(&req.n, data);
}
#endif
--
To view, visit http://gerrit.openvpn.net/c/openvpn/+/1547?usp=email
To unsubscribe, or for help writing mail filters, visit
http://gerrit.openvpn.net/settings?usp=email
Gerrit-MessageType: newpatchset
Gerrit-Project: openvpn
Gerrit-Branch: master
Gerrit-Change-Id: I560f45fb0011180be8ca2b0e7fbc63030fa10f35
Gerrit-Change-Number: 1547
Gerrit-PatchSet: 2
Gerrit-Owner: plaisthos <[email protected]>
Gerrit-Reviewer: ordex <[email protected]>
Gerrit-Reviewer: ralf_lici <[email protected]>
Gerrit-CC: openvpn-devel <[email protected]>
Gerrit-Attention: plaisthos <[email protected]>
Gerrit-Attention: ralf_lici <[email protected]>
_______________________________________________
Openvpn-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openvpn-devel