Am 18.06.17 um 21:41 schrieb Gert Doering:
> A malformed TCP header could lead to a one-byte overread when
> searching for the MSS option (but as far as we know, with no
> adverse consequences).
> 
> Change outer loop to always ensure there's one extra byte available
> in the buffer examined.
> 
> Technically, this would cause OpenVPN to ignore the only single-byte
> TCP option available, 'NOP', if it ends up being the very last
> option in the buffer - so what, it's a NOP anyway, and all we
> are interested is MSS, which needs 4 bytes.
> (https://www.iana.org/assignments/tcp-parameters/tcp-parameters.xhtml)
> 
> Found and reported by Guido Vranken <guidovran...@gmail.com>.
> 
> Trac: #745
> 
> Signed-off-by: Gert Doering <g...@greenie.muc.de>
> ---
>  src/openvpn/mss.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/openvpn/mss.c b/src/openvpn/mss.c
> index ff24068..7c596d7 100644
> --- a/src/openvpn/mss.c
> +++ b/src/openvpn/mss.c
> @@ -159,7 +159,7 @@ mss_fixup_dowork(struct buffer *buf, uint16_t maxmss)
>  
>      for (olen = hlen - sizeof(struct openvpn_tcphdr),
>           opt = (uint8_t *)(tc + 1);
> -         olen > 0;
> +         olen > 1;
>           olen -= optlen, opt += optlen)
>      {
>          if (*opt == OPENVPN_TCPOPT_EOL)
> 

ACK. That for is strangely formatted. I have to look very hard to figure
out that.

Arne

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to