From 76776ddf999753c04641ff602ae38be84af61a09 Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Tue, 13 Dec 2016 09:17:39 +0100 Subject: [PATCH] delay check of remote address --- proxy/shadowsocks/protocol.go | 6 +++++- proxy/vmess/encoding/server.go | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/proxy/shadowsocks/protocol.go b/proxy/shadowsocks/protocol.go index 4de2f51f..5b1b56fb 100644 --- a/proxy/shadowsocks/protocol.go +++ b/proxy/shadowsocks/protocol.go @@ -97,7 +97,7 @@ func ReadTCPSession(user *protocol.User, reader io.Reader) (*protocol.RequestHea } request.Address = v2net.DomainAddress(string(buffer.BytesFrom(-domainLength))) default: - return nil, nil, errors.New("Shadowsocks|TCP: Unknown address type: ", addrType) + // Check address validity after OTA verification. } err = buffer.AppendSupplier(buf.ReadFullFrom(reader, 2)) @@ -120,6 +120,10 @@ func ReadTCPSession(user *protocol.User, reader io.Reader) (*protocol.RequestHea } } + if request.Address == nil { + return nil, nil, errors.New("Shadowsocks|TCP: Invalid remote address.") + } + var chunkReader buf.Reader if request.Option.Has(RequestOptionOneTimeAuth) { chunkReader = NewChunkReader(reader, NewAuthenticator(ChunkKeyGenerator(iv))) diff --git a/proxy/vmess/encoding/server.go b/proxy/vmess/encoding/server.go index 04fc40eb..dee9e759 100644 --- a/proxy/vmess/encoding/server.go +++ b/proxy/vmess/encoding/server.go @@ -152,6 +152,10 @@ func (v *ServerSession) DecodeRequestHeader(reader io.Reader) (*protocol.Request return nil, errors.New("VMess|Server: Invalid auth.") } + if request.Address == nil { + return nil, errors.New("VMess|Server: Invalid remote address.") + } + return request, nil }