From 4095dcbf05ba017562b6d37aa2b347d1aa3e7c84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Wed, 6 Sep 2023 19:33:17 +0800 Subject: [PATCH] Reject invalid connection --- route/router.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/route/router.go b/route/router.go index ff9224ac..296d7d49 100644 --- a/route/router.go +++ b/route/router.go @@ -700,6 +700,9 @@ func (r *Router) RouteConnection(ctx context.Context, conn net.Conn, metadata ad if !common.Contains(detour.Network(), N.NetworkTCP) { return E.New("missing supported outbound, closing connection") } + if !metadata.Destination.IsValid() && len(metadata.DestinationAddresses) == 0 { + return E.New("invalid destination address") + } if r.clashServer != nil { trackerConn, tracker := r.clashServer.RoutedConnection(ctx, conn, metadata, matchedRule) defer tracker.Leave() @@ -812,6 +815,9 @@ func (r *Router) RoutePacketConnection(ctx context.Context, conn N.PacketConn, m if !common.Contains(detour.Network(), N.NetworkUDP) { return E.New("missing supported outbound, closing packet connection") } + if !metadata.Destination.IsValid() && len(metadata.DestinationAddresses) == 0 { + return E.New("invalid destination address") + } if r.clashServer != nil { trackerConn, tracker := r.clashServer.RoutedPacketConnection(ctx, conn, metadata, matchedRule) defer tracker.Leave()