p4gefau1t / trojan-go

Go实现的Trojan代理,支持多路复用/路由功能/CDN中转/Shadowsocks混淆插件,多平台,无依赖。A Trojan proxy written in Go. An unidentifiable mechanism that helps you bypass GFW. https://p4gefau1t.github.io/trojan-go/
GNU General Public License v3.0
7.54k stars 1.64k forks source link

[BUG] Crash in UDP packet handler #434

Open ValdikSS opened 2 years ago

ValdikSS commented 2 years ago

我们建议您按照下方模板填写 Bug Report,以便我们收集更多的有效信息

简单描述这个 Bug

Trojan Client crashes upon receiving UDP packet to the client's port.

如何复现这个 Bug

  1. ./trojan-go -url "trojan-go://72add600-a963-11ec-96ce-1239d0255272@argentina.gob.ar:443/?sni=fr-trojan.bonds.id&type=ws&host=fr-trojan.bonds.id&path=%2Fhowdy"
  2. echo | nc -u 127.0.0.1 1080

Result:

panic: runtime error: slice bounds out of range [3:1]

goroutine 21 [running]:
github.com/p4gefau1t/trojan-go/tunnel/socks.(*Server).packetDispatchLoop(0xc0001da480)
        github.com/p4gefau1t/trojan-go/tunnel/socks/server.go:177 +0x992
created by github.com/p4gefau1t/trojan-go/tunnel/socks.NewServer
        github.com/p4gefau1t/trojan-go/tunnel/socks/server.go:260 +0x307

服务器和客户端环境信息

$ ./trojan-go -version
Trojan-Go v0.10.6
Go Version: go1.17.1
OS/Arch: linux/amd64
Git Commit: 2dc60f52e79ff8b910e78e444f1e80678e936450