mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-29 04:55:31 +00:00
atomicfile: use /tmp for socket path on macOS
macOS does not allow unix socket creation in private temp directories, but global /tmp is ok, so swap out for global temp for now. Updates #7658 Updates #7785 Signed-off-by: James Tucker <jftucker@gmail.com>
This commit is contained in:
parent
4d1b3bc26f
commit
b0ed863d55
@ -7,7 +7,9 @@
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"net"
|
"net"
|
||||||
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
@ -17,18 +19,25 @@ func TestDoesNotOverwriteIrregularFiles(t *testing.T) {
|
|||||||
// atomicfile.Write should likely not attempt to overwrite an irregular file
|
// atomicfile.Write should likely not attempt to overwrite an irregular file
|
||||||
// such as a device node, socket, or named pipe.
|
// such as a device node, socket, or named pipe.
|
||||||
|
|
||||||
d := t.TempDir()
|
const filename = "TestDoesNotOverwriteIrregularFiles"
|
||||||
special := filepath.Join(d, "special")
|
var path string
|
||||||
|
// macOS private temp does not allow unix socket creation, but /tmp does.
|
||||||
|
if runtime.GOOS == "darwin" {
|
||||||
|
path = filepath.Join("/tmp", filename)
|
||||||
|
t.Cleanup(func() { os.Remove(path) })
|
||||||
|
} else {
|
||||||
|
path = filepath.Join(t.TempDir(), filename)
|
||||||
|
}
|
||||||
|
|
||||||
// The least troublesome thing to make that is not a file is a unix socket.
|
// The least troublesome thing to make that is not a file is a unix socket.
|
||||||
// Making a null device sadly requries root.
|
// Making a null device sadly requries root.
|
||||||
l, err := net.ListenUnix("unix", &net.UnixAddr{Name: special, Net: "unix"})
|
l, err := net.ListenUnix("unix", &net.UnixAddr{Name: path, Net: "unix"})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
defer l.Close()
|
defer l.Close()
|
||||||
|
|
||||||
err = WriteFile(special, []byte("hello"), 0644)
|
err = WriteFile(path, []byte("hello"), 0644)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("expected error, got nil")
|
t.Fatal("expected error, got nil")
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user