Attention is currently required from: plaisthos. Hello plaisthos,
I'd like you to reexamine a change. Please visit http://gerrit.openvpn.net/c/openvpn/+/1164?usp=email to look at the new patch set (#3). Change subject: proto: Clean up conversion warnings related to checksum macros ...................................................................... proto: Clean up conversion warnings related to checksum macros These should not change any behavior, they mostly clarify the used types and silence warnings, since these casts are deliberate. Change-Id: Ica721a51b00d5314125bcaf5a586e718c5982aef Signed-off-by: Frank Lichtenheld <fr...@lichtenheld.com> --- M src/openvpn/clinat.c M src/openvpn/mss.c M src/openvpn/proto.h 3 files changed, 37 insertions(+), 51 deletions(-) git pull ssh://gerrit.openvpn.net:29418/openvpn refs/changes/64/1164/3 diff --git a/src/openvpn/clinat.c b/src/openvpn/clinat.c index b49d4bb..7751a47 100644 --- a/src/openvpn/clinat.c +++ b/src/openvpn/clinat.c @@ -185,11 +185,7 @@ const int direction) { struct ip_tcp_udp_hdr *h = (struct ip_tcp_udp_hdr *)BPTR(ipbuf); - int i; - uint32_t addr, *addr_ptr; - const uint32_t *from, *to; - int accumulate = 0; - unsigned int amask; + int32_t accumulate = 0; unsigned int alog = 0; if (check_debug_level(D_CLIENT_NAT)) @@ -197,8 +193,11 @@ print_pkt(&h->ip, "BEFORE", direction, D_CLIENT_NAT); } - for (i = 0; i < list->n; ++i) + for (int i = 0; i < list->n; ++i) { + uint32_t addr, *addr_ptr; + const uint32_t *from, *to; + unsigned int amask; const struct client_nat_entry *e = &list->entries[i]; /* current NAT rule */ if (e->type ^ direction) { diff --git a/src/openvpn/mss.c b/src/openvpn/mss.c index e7111a8..f2b314f 100644 --- a/src/openvpn/mss.c +++ b/src/openvpn/mss.c @@ -130,11 +130,6 @@ } } -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - /* * change TCP MSS option in SYN/SYN-ACK packets, if present * this is generic for IPv4 and IPv6, as the TCP header is the same @@ -143,11 +138,8 @@ void mss_fixup_dowork(struct buffer *buf, uint16_t maxmss) { - int hlen, olen, optlen; + int olen, optlen; uint8_t *opt; - uint16_t mssval; - int accumulate; - struct openvpn_tcphdr *tc; if (BLEN(buf) < (int)sizeof(struct openvpn_tcphdr)) { @@ -155,8 +147,8 @@ } verify_align_4(buf); - tc = (struct openvpn_tcphdr *)BPTR(buf); - hlen = OPENVPN_TCPH_GET_DOFF(tc->doff_res); + struct openvpn_tcphdr *tc = (struct openvpn_tcphdr *)BPTR(buf); + int hlen = OPENVPN_TCPH_GET_DOFF(tc->doff_res); /* Invalid header length or header without options. */ if (hlen <= (int)sizeof(struct openvpn_tcphdr) || hlen > BLEN(buf)) @@ -171,43 +163,38 @@ { break; } - else if (*opt == OPENVPN_TCPOPT_NOP) + if (*opt == OPENVPN_TCPOPT_NOP) { optlen = 1; + continue; } - else + + optlen = *(opt + 1); + if (optlen <= 0 || optlen > olen) { - optlen = *(opt + 1); - if (optlen <= 0 || optlen > olen) + break; + } + if (*opt == OPENVPN_TCPOPT_MAXSEG) + { + if (optlen != OPENVPN_TCPOLEN_MAXSEG) { - break; + continue; } - if (*opt == OPENVPN_TCPOPT_MAXSEG) + uint16_t mssval = opt[2] << 8; + mssval += opt[3]; + if (mssval > maxmss) { - if (optlen != OPENVPN_TCPOLEN_MAXSEG) - { - continue; - } - mssval = opt[2] << 8; - mssval += opt[3]; - if (mssval > maxmss) - { - dmsg(D_MSS, "MSS: %" PRIu16 " -> %" PRIu16, mssval, maxmss); - accumulate = htons(mssval); - opt[2] = (uint8_t)((maxmss >> 8) & 0xff); - opt[3] = (uint8_t)(maxmss & 0xff); - accumulate -= htons(maxmss); - ADJUST_CHECKSUM(accumulate, tc->check); - } + dmsg(D_MSS, "MSS: %" PRIu16 " -> %" PRIu16, mssval, maxmss); + opt[2] = (uint8_t)((maxmss >> 8) & 0xff); + opt[3] = (uint8_t)(maxmss & 0xff); + int32_t accumulate = htons(mssval); + accumulate -= htons(maxmss); + ADJUST_CHECKSUM(accumulate, tc->check); } } } } -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic pop -#endif - static inline size_t adjust_payload_max_cbc(const struct key_type *kt, size_t target) { diff --git a/src/openvpn/proto.h b/src/openvpn/proto.h index 62157fa..94952bd 100644 --- a/src/openvpn/proto.h +++ b/src/openvpn/proto.h @@ -214,7 +214,7 @@ */ #define ADJUST_CHECKSUM(acc, cksum) \ { \ - int _acc = acc; \ + int32_t _acc = acc; \ _acc += (cksum); \ if (_acc < 0) \ { \ @@ -231,16 +231,16 @@ } \ } -#define ADD_CHECKSUM_32(acc, u32) \ - { \ - acc += (u32) & 0xffff; \ - acc += (u32) >> 16; \ +#define ADD_CHECKSUM_32(acc, u32) \ + { \ + acc += (int32_t)((u32) & 0xffff); \ + acc += (int32_t)((u32) >> 16); \ } -#define SUB_CHECKSUM_32(acc, u32) \ - { \ - acc -= (u32) & 0xffff; \ - acc -= (u32) >> 16; \ +#define SUB_CHECKSUM_32(acc, u32) \ + { \ + acc -= (int32_t)((u32) & 0xffff); \ + acc -= (int32_t)((u32) >> 16); \ } /* -- To view, visit http://gerrit.openvpn.net/c/openvpn/+/1164?usp=email To unsubscribe, or for help writing mail filters, visit http://gerrit.openvpn.net/settings Gerrit-Project: openvpn Gerrit-Branch: master Gerrit-Change-Id: Ica721a51b00d5314125bcaf5a586e718c5982aef Gerrit-Change-Number: 1164 Gerrit-PatchSet: 3 Gerrit-Owner: flichtenheld <fr...@lichtenheld.com> Gerrit-Reviewer: plaisthos <arne-open...@rfc2549.org> Gerrit-CC: openvpn-devel <openvpn-devel@lists.sourceforge.net> Gerrit-Attention: plaisthos <arne-open...@rfc2549.org> Gerrit-MessageType: newpatchset
_______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel