From 5ea22cecadaa73baec747bcaa3d7d9ff0999c765 Mon Sep 17 00:00:00 2001 From: Kr328 <39107975+Kr328@users.noreply.github.com> Date: Mon, 30 Mar 2020 13:09:36 +0800 Subject: [PATCH] update tun2socket & fix crash on tcp dns query --- core/src/main/golang/go.mod | 2 +- core/src/main/golang/go.sum | 5 +---- core/src/main/golang/tun/dns.go | 7 ++++++- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/core/src/main/golang/go.mod b/core/src/main/golang/go.mod index 221780c..a96b555 100644 --- a/core/src/main/golang/go.mod +++ b/core/src/main/golang/go.mod @@ -4,7 +4,7 @@ go 1.13 require ( github.com/Dreamacro/clash v0.0.0 // local - github.com/kr328/tun2socket v0.0.0-20200329121007-30f448e4366d // indirect + github.com/kr328/tun2socket v0.0.0-20200329184923-76cc473668aa // indirect ) replace github.com/Dreamacro/clash => ./clash diff --git a/core/src/main/golang/go.sum b/core/src/main/golang/go.sum index 2155575..8853880 100644 --- a/core/src/main/golang/go.sum +++ b/core/src/main/golang/go.sum @@ -8,10 +8,7 @@ github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1 github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr328/tun2socket v0.0.0-20200329072230-e1e678c554ba h1:pFZTPa+tZ/8kh4nL+JeUPyS3sY7OH5TCx75GDoVB/Qc= -github.com/kr328/tun2socket v0.0.0-20200329072230-e1e678c554ba/go.mod h1:FWfSixjrLgtK+dHkDoN6lHMNhvER24gnjUZd/wt8Z9o= -github.com/kr328/tun2socket v0.0.0-20200329121007-30f448e4366d h1:61CwLyFpxvrOH58EnYmTlI9rENhpPy/zf+DoSUg0RB4= -github.com/kr328/tun2socket v0.0.0-20200329121007-30f448e4366d/go.mod h1:FWfSixjrLgtK+dHkDoN6lHMNhvER24gnjUZd/wt8Z9o= +github.com/kr328/tun2socket v0.0.0-20200329184923-76cc473668aa/go.mod h1:FWfSixjrLgtK+dHkDoN6lHMNhvER24gnjUZd/wt8Z9o= github.com/miekg/dns v1.1.29/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/oschwald/geoip2-golang v1.4.0/go.mod h1:8QwxJvRImBH+Zl6Aa6MaIcs5YdlZSTKtzmPGzQqi9ng= github.com/oschwald/maxminddb-golang v1.6.0/go.mod h1:DUJFucBg2cvqx42YmDa/+xHvb0elJtOm3o4aFQ/nb/w= diff --git a/core/src/main/golang/tun/dns.go b/core/src/main/golang/tun/dns.go index 1184232..7bf1e9f 100644 --- a/core/src/main/golang/tun/dns.go +++ b/core/src/main/golang/tun/dns.go @@ -74,7 +74,12 @@ func hijackTCPDNS(conn net.Conn, endpoint *binding.Endpoint) bool { data := make([]byte, length) msg := &D.Msg{} - if err := msg.Unpack(data); err != nil { + _, err := io.ReadFull(conn, data) + if err != nil { + return + } + + if err := msg.Unpack(data); err != nil || len(msg.Question) == 0 { return }