From befce3f9903f8772a3282c4dcc6bb36c5d202cc9 Mon Sep 17 00:00:00 2001 From: Wade Simmons Date: Mon, 6 Dec 2021 14:06:16 -0500 Subject: [PATCH] fix crash with `-test` (#602) When running in `-test` mode, `tun` is set to nil. So we should move the defer into the `!configTest` if block. panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x54855c] goroutine 1 [running]: github.com/slackhq/nebula.Main.func3(0x4000135e80, {0x0, 0x0}) github.com/slackhq/nebula/main.go:176 +0x2c github.com/slackhq/nebula.Main(0x400022e060, 0x1, {0x76faa0, 0x5}, 0x4000230000, 0x0) github.com/slackhq/nebula/main.go:316 +0x2414 main.main() github.com/slackhq/nebula/cmd/nebula/main.go:54 +0x540 --- main.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/main.go b/main.go index fcd1200..004f739 100644 --- a/main.go +++ b/main.go @@ -138,13 +138,13 @@ func Main(c *config.C, configTest bool, buildVersion string, logger *logrus.Logg if err != nil { return nil, util.NewContextualError("Failed to get a tun/tap device", nil, err) } - } - defer func() { - if reterr != nil { - tun.Close() - } - }() + defer func() { + if reterr != nil { + tun.Close() + } + }() + } // set up our UDP listener udpConns := make([]*udp.Conn, routines)