From 61f1f05339fa23c795ced6c0c622dee2ddd6394b Mon Sep 17 00:00:00 2001 From: ginuerzh Date: Sun, 8 Oct 2023 22:04:36 +0800 Subject: [PATCH] fix panic in tun handler --- handler/tap/handler.go | 6 ++++++ handler/tun/server.go | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/handler/tap/handler.go b/handler/tap/handler.go index e73af6d..1d081a2 100644 --- a/handler/tap/handler.go +++ b/handler/tap/handler.go @@ -204,6 +204,9 @@ func (h *tapHandler) transport(tap net.Conn, conn net.PacketConn, raddr net.Addr } return err } + if n == 0 { + return nil + } src := waterutil.MACSource((*b)[:n]) dst := waterutil.MACDestination((*b)[:n]) @@ -260,6 +263,9 @@ func (h *tapHandler) transport(tap net.Conn, conn net.PacketConn, raddr net.Addr err != shadowaead.ErrShortPacket { return err } + if n == 0 { + return nil + } src := waterutil.MACSource((*b)[:n]) dst := waterutil.MACDestination((*b)[:n]) diff --git a/handler/tun/server.go b/handler/tun/server.go index cc30a5b..09e7b66 100644 --- a/handler/tun/server.go +++ b/handler/tun/server.go @@ -49,6 +49,9 @@ func (h *tunHandler) transportServer(ctx context.Context, tun io.ReadWriter, con if err != nil { return ErrTun } + if n == 0 { + return nil + } var src, dst net.IP if waterutil.IsIPv4((*b)[:n]) { @@ -110,6 +113,9 @@ func (h *tunHandler) transportServer(ctx context.Context, tun io.ReadWriter, con if err != nil { return err } + if n == 0 { + return nil + } if n > keepAliveHeaderLength && bytes.Equal((*b)[:4], magicHeader) { var peerIPs []net.IP data := (*b)[keepAliveHeaderLength:n]