safesocket: correct logic for determining if we're a macOS GUI client (#15187)

fixes tailscale/corp#26806

This was still slightly incorrect. We care only if the caller is the macSys
or macOs app.  isSandBoxedMacOS doesn't give us the correct answer
for macSys because technically, macsys isn't sandboxed.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
This commit is contained in:
Jonathan Nobels 2025-03-03 14:54:57 -05:00 committed by GitHub
parent ce6ce81311
commit 5449aba94c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 10 deletions

View File

@ -39,12 +39,12 @@ type safesocketDarwin struct {
checkConn bool // Check macsys safesocket port before returning it checkConn bool // Check macsys safesocket port before returning it
isMacSysExt func() bool // For testing only to force macsys isMacSysExt func() bool // For testing only to force macsys
isSandboxedMacos func() bool // For testing only to force macOS sandbox isMacGUIApp func() bool // For testing only to force macOS sandbox
} }
var ssd = safesocketDarwin{ var ssd = safesocketDarwin{
isMacSysExt: version.IsMacSysExt, isMacSysExt: version.IsMacSysExt,
isSandboxedMacos: version.IsSandboxedMacOS, isMacGUIApp: func() bool { return version.IsMacAppStore() || version.IsMacSysApp() },
checkConn: true, checkConn: true,
sharedDir: "/Library/Tailscale", sharedDir: "/Library/Tailscale",
} }
@ -68,7 +68,7 @@ func localTCPPortAndTokenDarwin() (port int, token string, err error) {
ssd.mu.Lock() ssd.mu.Lock()
defer ssd.mu.Unlock() defer ssd.mu.Unlock()
if !ssd.isSandboxedMacos() { if !ssd.isMacGUIApp() {
return 0, "", ErrNoTokenOnOS return 0, "", ErrNoTokenOnOS
} }

View File

@ -17,7 +17,7 @@
func TestSetCredentials(t *testing.T) { func TestSetCredentials(t *testing.T) {
wantPort := 123 wantPort := 123
wantToken := "token" wantToken := "token"
tstest.Replace(t, &ssd.isSandboxedMacos, func() bool { return true }) tstest.Replace(t, &ssd.isMacGUIApp, func() bool { return true })
SetCredentials(wantToken, wantPort) SetCredentials(wantToken, wantPort)
gotPort, gotToken, err := LocalTCPPortAndToken() gotPort, gotToken, err := LocalTCPPortAndToken()
@ -38,7 +38,7 @@ func TestSetCredentials(t *testing.T) {
// returns a listener and a non-zero port and non-empty token. // returns a listener and a non-zero port and non-empty token.
func TestInitListenerDarwin(t *testing.T) { func TestInitListenerDarwin(t *testing.T) {
temp := t.TempDir() temp := t.TempDir()
tstest.Replace(t, &ssd.isSandboxedMacos, func() bool { return true }) tstest.Replace(t, &ssd.isMacGUIApp, func() bool { return true })
ln, err := InitListenerDarwin(temp) ln, err := InitListenerDarwin(temp)
if err != nil || ln == nil { if err != nil || ln == nil {