From dcbb1ee87224bf7fbfaa00d85d968919ce9a11a4 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Sun, 31 Jan 2010 00:23:31 +0000 Subject: [PATCH] #2778 (IPv6 PEX accepts garbage addresses) -- accept petch from jch to reject IPv6 addresses outside of 2000::/3 until the end of the 13th Baktun --- libtransmission/net.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libtransmission/net.c b/libtransmission/net.c index ab527660c..d454c9f16 100644 --- a/libtransmission/net.c +++ b/libtransmission/net.c @@ -630,7 +630,13 @@ isMartianAddr( const struct tr_address * a ) const unsigned char * address = (const unsigned char*)&a->addr.addr6; return (address[0] == 0xFF) || (memcmp(address, zeroes, 15) == 0 && - (address[15] == 0 || address[15] == 1)); + (address[15] == 0 || address[15] == 1)) || + /* Addresses outside of 2000::/3 are currently reserved, + but might be allocated at some future time. Since + there are a lot of buggy peers pushing around such + addresses over PEX, we reject them until the end of + the 13th Baktun. */ + (tr_time() < 1356130800 && (address[0] & 0xC0) != 0x20); break; }