tailscale/net/netns
James Tucker 9ed3a061c3 net/netns: fix segv when no tailscale interface is found
`interfaces.Tailscale()` returns all zero values when it finds no
Tailscale interface and encounters no errors. The netns package was
treating no error as a signal that it would receive a non-zero pointer
value leading to nil pointer dereference.

Observed in:

```
--- FAIL: TestGetInterfaceIndex (0.00s)
    --- FAIL: TestGetInterfaceIndex/IP_and_port (0.00s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
        panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x0 pc=0x1029eb7d8]

goroutine 7 [running]:
testing.tRunner.func1.2({0x102a691e0, 0x102bc05c0})
        /Users/raggi/.cache/tailscale-go/src/testing/testing.go:1526 +0x1c8
testing.tRunner.func1()
        /Users/raggi/.cache/tailscale-go/src/testing/testing.go:1529 +0x384
panic({0x102a691e0, 0x102bc05c0})
        /Users/raggi/.cache/tailscale-go/src/runtime/panic.go:884 +0x204
tailscale.com/net/netns.getInterfaceIndex(0x14000073f28, 0x1028d0284?, {0x1029ef3b7, 0xa})
        /Users/raggi/src/github.com/tailscale/tailscale/net/netns/netns_darwin.go:114 +0x228
tailscale.com/net/netns.TestGetInterfaceIndex.func2(0x14000138000)
        /Users/raggi/src/github.com/tailscale/tailscale/net/netns/netns_darwin_test.go:37 +0x54
testing.tRunner(0x14000138000, 0x140000551b0)
        /Users/raggi/.cache/tailscale-go/src/testing/testing.go:1576 +0x10c
created by testing.(*T).Run
        /Users/raggi/.cache/tailscale-go/src/testing/testing.go:1629 +0x368
FAIL    tailscale.com/net/netns 0.824s
```

Fixes #8064

Signed-off-by: James Tucker <jftucker@gmail.com>
2023-05-05 11:31:43 -07:00
..
netns_android.go all: avoid repeated default interface lookups 2023-04-20 15:46:01 -07:00
netns_darwin_test.go all: avoid repeated default interface lookups 2023-04-20 15:46:01 -07:00
netns_darwin.go net/netns: fix segv when no tailscale interface is found 2023-05-05 11:31:43 -07:00
netns_default.go all: avoid repeated default interface lookups 2023-04-20 15:46:01 -07:00
netns_linux_test.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
netns_linux.go all: avoid repeated default interface lookups 2023-04-20 15:46:01 -07:00
netns_test.go all: avoid repeated default interface lookups 2023-04-20 15:46:01 -07:00
netns_windows.go all: avoid repeated default interface lookups 2023-04-20 15:46:01 -07:00
netns.go all: avoid repeated default interface lookups 2023-04-20 15:46:01 -07:00
socks.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00