123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- // Copyright (C) 2016 The Syncthing Authors.
- //
- // This Source Code Form is subject to the terms of the Mozilla Public
- // License, v. 2.0. If a copy of the MPL was not distributed with this file,
- // You can obtain one at https://mozilla.org/MPL/2.0/.
- //+build !windows
- // (No syscall.Umask or the equivalent on Windows)
- package osutil
- import (
- "io/ioutil"
- "os"
- "syscall"
- "testing"
- )
- func TestTempFilePermissions(t *testing.T) {
- // Set a zero umask, so any files created will have the permission bits
- // asked for in the create call and nothing less.
- oldMask := syscall.Umask(0)
- defer syscall.Umask(oldMask)
- fd, err := ioutil.TempFile("", "test")
- if err != nil {
- t.Fatal(err)
- }
- info, err := fd.Stat()
- if err != nil {
- t.Fatal(err)
- }
- defer os.Remove(fd.Name())
- defer fd.Close()
- // The temp file should have 0600 permissions at the most, or we have a
- // security problem in CreateAtomic.
- t.Logf("Got 0%03o", info.Mode())
- if info.Mode()&^0600 != 0 {
- t.Errorf("Permission 0%03o is too generous", info.Mode())
- }
- }
|