diff options
| author | Jakob Unterwurzacher | 2025-07-07 19:54:48 +0200 | 
|---|---|---|
| committer | Jakob Unterwurzacher | 2025-07-07 19:59:35 +0200 | 
| commit | 8f5df19b353e02ffba842fd1b15ccf93da7ee3b4 (patch) | |
| tree | 8f68b74e56a1d20af82e5093a059d180c925f9be | |
| parent | cdb80ea9825d2e876f1cf579bf960e4da7656b4c (diff) | |
Fix a bunch of staticcheck errors
Tool-assisted.
43 files changed, 147 insertions, 174 deletions
| diff --git a/cli_args.go b/cli_args.go index 4101b86..e690e15 100644 --- a/cli_args.go +++ b/cli_args.go @@ -84,7 +84,7 @@ func prefixOArgs(osArgs []string) ([]string, error) {  		if osArgs[i] == "-o" {  			// Last argument?  			if i+1 >= len(osArgs) { -				return nil, fmt.Errorf("The \"-o\" option requires an argument") +				return nil, fmt.Errorf("the \"-o\" option requires an argument")  			}  			oOpts = strings.Split(osArgs[i+1], ",")  			// Skip over the arguments to "-o" diff --git a/contrib/atomicrename/main.go b/contrib/atomicrename/main.go index 394753b..337371c 100644 --- a/contrib/atomicrename/main.go +++ b/contrib/atomicrename/main.go @@ -4,7 +4,6 @@ import (  	"bytes"  	"flag"  	"fmt" -	"io/ioutil"  	"os"  	"strings"  	"sync/atomic" @@ -49,7 +48,7 @@ func main() {  		srcFiles[srcName] = struct{}{}  		buf := bytes.Repeat([]byte("_"), i)  		buf = append(buf, hello...) -		if err := ioutil.WriteFile(srcName, buf, 0600); err != nil { +		if err := os.WriteFile(srcName, buf, 0600); err != nil {  			panic(err)  		}  		fmt.Print(".") @@ -58,7 +57,7 @@ func main() {  	// prepare destination file  	const dstName = "dst.atomicrename" -	if err := ioutil.WriteFile(dstName, hello, 0600); err != nil { +	if err := os.WriteFile(dstName, hello, 0600); err != nil {  		panic(err)  	} @@ -69,7 +68,7 @@ func main() {  	// read thread  	go func() {  		for atomic.LoadInt32(&running) == 1 { -			have, err := ioutil.ReadFile(dstName) +			have, err := os.ReadFile(dstName)  			if err != nil {  				fmt.Println(err)  				stats.readError++ @@ -4,7 +4,6 @@ import (  	"bytes"  	"fmt"  	"io" -	"io/ioutil"  	"os"  	"os/signal"  	"path/filepath" @@ -264,7 +263,7 @@ func fsck(args *argContainer) (exitcode int) {  	args.allow_other = false  	args.ro = true  	var err error -	args.mountpoint, err = ioutil.TempDir("", "gocryptfs.fsck.") +	args.mountpoint, err = os.MkdirTemp("", "gocryptfs.fsck.")  	if err != nil {  		tlog.Fatal.Printf("fsck: TmpDir: %v", err)  		os.Exit(exitcodes.MountPoint) diff --git a/gocryptfs-xray/xray_tests/xray_test.go b/gocryptfs-xray/xray_tests/xray_test.go index 6dc7c13..e9b9eab 100644 --- a/gocryptfs-xray/xray_tests/xray_test.go +++ b/gocryptfs-xray/xray_tests/xray_test.go @@ -3,7 +3,7 @@ package xray_tests  import (  	"bytes"  	"fmt" -	"io/ioutil" +	"os"  	"os/exec"  	"testing" @@ -11,7 +11,7 @@ import (  )  func TestAesgcmXray(t *testing.T) { -	expected, err := ioutil.ReadFile("aesgcm_fs.xray.txt") +	expected, err := os.ReadFile("aesgcm_fs.xray.txt")  	if err != nil {  		t.Fatal(err)  	} @@ -28,7 +28,7 @@ func TestAesgcmXray(t *testing.T) {  }  func TestAessivXray(t *testing.T) { -	expected, err := ioutil.ReadFile("aessiv_fs.xray.txt") +	expected, err := os.ReadFile("aessiv_fs.xray.txt")  	if err != nil {  		t.Fatal(err)  	} @@ -13,8 +13,8 @@ const tUsage = "" +  // helpShort is what gets displayed when passed "-h" or on syntax error.  func helpShort() {  	printVersion() -	fmt.Printf("\n") -	fmt.Printf(tUsage) +	fmt.Print("\n") +	fmt.Print(tUsage)  	fmt.Printf(`  Common Options (use -hh to show all):    -aessiv            Use AES-SIV encryption (with -init) @@ -48,8 +48,8 @@ Common Options (use -hh to show all):  // helpLong gets only displayed on "-hh"  func helpLong() {  	printVersion() -	fmt.Printf("\n") -	fmt.Printf(tUsage) +	fmt.Print("\n") +	fmt.Print(tUsage)  	fmt.Printf(`  Notes: All options can equivalently use "-" (single dash) or "--" (double dash).         A standalone "--" stops option parsing. diff --git a/init_dir.go b/init_dir.go index d79a4b7..3546084 100644 --- a/init_dir.go +++ b/init_dir.go @@ -2,7 +2,6 @@ package main  import (  	"fmt" -	"io/ioutil"  	"os"  	"path/filepath"  	"strings" @@ -26,7 +25,7 @@ func isEmptyDir(dir string) error {  	if err != nil {  		return err  	} -	entries, err := ioutil.ReadDir(dir) +	entries, err := os.ReadDir(dir)  	if err != nil {  		return err  	} diff --git a/internal/configfile/config_file.go b/internal/configfile/config_file.go index 995a0c8..28a1ca5 100644 --- a/internal/configfile/config_file.go +++ b/internal/configfile/config_file.go @@ -5,7 +5,6 @@ package configfile  import (  	"encoding/json"  	"fmt" -	"io/ioutil"  	"syscall"  	"os" @@ -183,12 +182,12 @@ func Load(filename string) (*ConfFile, error) {  	cf.filename = filename  	// Read from disk -	js, err := ioutil.ReadFile(filename) +	js, err := os.ReadFile(filename)  	if err != nil {  		return nil, err  	}  	if len(js) == 0 { -		return nil, fmt.Errorf("Config file is empty") +		return nil, fmt.Errorf("config file is empty")  	}  	// Unmarshal diff --git a/internal/configfile/scrypt.go b/internal/configfile/scrypt.go index 0ce8777..f6201ba 100644 --- a/internal/configfile/scrypt.go +++ b/internal/configfile/scrypt.go @@ -87,19 +87,19 @@ func (s *ScryptKDF) LogN() int {  func (s *ScryptKDF) validateParams() error {  	minN := 1 << scryptMinLogN  	if s.N < minN { -		return fmt.Errorf("Fatal: scryptn below 10 is too low to make sense") +		return fmt.Errorf("fatal: scryptn below 10 is too low to make sense")  	}  	if s.R < scryptMinR { -		return fmt.Errorf("Fatal: scrypt parameter R below minimum: value=%d, min=%d", s.R, scryptMinR) +		return fmt.Errorf("fatal: scrypt parameter R below minimum: value=%d, min=%d", s.R, scryptMinR)  	}  	if s.P < scryptMinP { -		return fmt.Errorf("Fatal: scrypt parameter P below minimum: value=%d, min=%d", s.P, scryptMinP) +		return fmt.Errorf("fatal: scrypt parameter P below minimum: value=%d, min=%d", s.P, scryptMinP)  	}  	if len(s.Salt) < scryptMinSaltLen { -		return fmt.Errorf("Fatal: scrypt salt length below minimum: value=%d, min=%d", len(s.Salt), scryptMinSaltLen) +		return fmt.Errorf("fatal: scrypt salt length below minimum: value=%d, min=%d", len(s.Salt), scryptMinSaltLen)  	}  	if s.KeyLen < cryptocore.KeyLen { -		return fmt.Errorf("Fatal: scrypt parameter KeyLen below minimum: value=%d, min=%d", s.KeyLen, cryptocore.KeyLen) +		return fmt.Errorf("fatal: scrypt parameter KeyLen below minimum: value=%d, min=%d", s.KeyLen, cryptocore.KeyLen)  	}  	return nil  } diff --git a/internal/configfile/validate.go b/internal/configfile/validate.go index ab8917d..5428a7b 100644 --- a/internal/configfile/validate.go +++ b/internal/configfile/validate.go @@ -9,7 +9,7 @@ import (  // Validate that the combination of settings makes sense and is supported  func (cf *ConfFile) Validate() error {  	if cf.Version != contentenc.CurrentVersion { -		return fmt.Errorf("Unsupported on-disk format %d", cf.Version) +		return fmt.Errorf("unsupported on-disk format %d", cf.Version)  	}  	// scrypt params ok?  	if err := cf.ScryptObject.validateParams(); err != nil { @@ -18,13 +18,13 @@ func (cf *ConfFile) Validate() error {  	// All feature flags that are in the config file are known?  	for _, flag := range cf.FeatureFlags {  		if !isFeatureFlagKnown(flag) { -			return fmt.Errorf("Unknown feature flag %q", flag) +			return fmt.Errorf("unknown feature flag %q", flag)  		}  	}  	// File content encryption  	{  		if cf.IsFeatureFlagSet(FlagXChaCha20Poly1305) && cf.IsFeatureFlagSet(FlagAESSIV) { -			return fmt.Errorf("Can't have both XChaCha20Poly1305 and AESSIV feature flags") +			return fmt.Errorf("can't have both XChaCha20Poly1305 and AESSIV feature flags")  		}  		if cf.IsFeatureFlagSet(FlagAESSIV) && !cf.IsFeatureFlagSet(FlagGCMIV128) { diff --git a/internal/contentenc/content.go b/internal/contentenc/content.go index 3005bf5..5bf0b3c 100644 --- a/internal/contentenc/content.go +++ b/internal/contentenc/content.go @@ -151,7 +151,7 @@ func (be *ContentEnc) DecryptBlock(ciphertext []byte, blockNo uint64, fileID []b  	if len(ciphertext) < be.cryptoCore.IVLen {  		tlog.Warn.Printf("DecryptBlock: Block is too short: %d bytes", len(ciphertext)) -		return nil, errors.New("Block is too short") +		return nil, errors.New("block is too short")  	}  	// Extract nonce diff --git a/internal/fusefrontend/prepare_syscall_test.go b/internal/fusefrontend/prepare_syscall_test.go index acddaf3..e2c7d08 100644 --- a/internal/fusefrontend/prepare_syscall_test.go +++ b/internal/fusefrontend/prepare_syscall_test.go @@ -1,6 +1,7 @@  package fusefrontend  import ( +	"context"  	"strings"  	"syscall"  	"testing" @@ -22,13 +23,13 @@ func TestPrepareAtSyscall(t *testing.T) {  	rn := newTestFS(args)  	out := &fuse.EntryOut{} -	child, errno := rn.Mkdir(nil, "dir1", 0700, out) +	child, errno := rn.Mkdir(context.TODO(), "dir1", 0700, out)  	if errno != 0 {  		t.Fatal(errno)  	}  	rn.AddChild("dir1", child, false)  	dir1 := toNode(child.Operations()) -	_, errno = dir1.Mkdir(nil, "dir2", 0700, out) +	_, errno = dir1.Mkdir(context.TODO(), "dir2", 0700, out)  	if errno != 0 {  		t.Fatal(errno)  	} @@ -43,7 +44,7 @@ func TestPrepareAtSyscall(t *testing.T) {  	syscall.Close(dirfd)  	// Again, but populate the cache for "" by looking up a non-existing file -	rn.Lookup(nil, "xyz1234", &fuse.EntryOut{}) +	rn.Lookup(context.TODO(), "xyz1234", &fuse.EntryOut{})  	dirfd, cName, errno = rn.prepareAtSyscallMyself()  	if errno != 0 {  		t.Fatal(errno) @@ -89,7 +90,7 @@ func TestPrepareAtSyscall(t *testing.T) {  	syscall.Close(dirfd)  	n255 := strings.Repeat("n", 255) -	dir1.Mkdir(nil, n255, 0700, out) +	dir1.Mkdir(context.TODO(), n255, 0700, out)  	dirfd, cName, errno = dir1.prepareAtSyscall(n255)  	if errno != 0 {  		t.Fatal(errno) @@ -116,13 +117,13 @@ func TestPrepareAtSyscallPlaintextnames(t *testing.T) {  	rn := newTestFS(args)  	out := &fuse.EntryOut{} -	child, errno := rn.Mkdir(nil, "dir1", 0700, out) +	child, errno := rn.Mkdir(context.TODO(), "dir1", 0700, out)  	if errno != 0 {  		t.Fatal(errno)  	}  	rn.AddChild("dir1", child, false)  	dir1 := toNode(child.Operations()) -	_, errno = dir1.Mkdir(nil, "dir2", 0700, out) +	_, errno = dir1.Mkdir(context.TODO(), "dir2", 0700, out)  	if errno != 0 {  		t.Fatal(errno)  	} diff --git a/internal/fusefrontend_reverse/excluder.go b/internal/fusefrontend_reverse/excluder.go index 0faadfa..1cb4b80 100644 --- a/internal/fusefrontend_reverse/excluder.go +++ b/internal/fusefrontend_reverse/excluder.go @@ -1,7 +1,6 @@  package fusefrontend_reverse  import ( -	"io/ioutil"  	"log"  	"os"  	"strings" @@ -50,7 +49,7 @@ func getExclusionPatterns(args fusefrontend.Args) []string {  // getLines reads a file and splits it into lines  func getLines(file string) ([]string, error) { -	buffer, err := ioutil.ReadFile(file) +	buffer, err := os.ReadFile(file)  	if err != nil {  		return nil, err  	} diff --git a/internal/fusefrontend_reverse/excluder_test.go b/internal/fusefrontend_reverse/excluder_test.go index bb041ce..b44ddce 100644 --- a/internal/fusefrontend_reverse/excluder_test.go +++ b/internal/fusefrontend_reverse/excluder_test.go @@ -1,7 +1,6 @@  package fusefrontend_reverse  import ( -	"io/ioutil"  	"os"  	"reflect"  	"testing" @@ -23,7 +22,7 @@ func TestShouldPrefixExcludeValuesWithSlash(t *testing.T) {  }  func TestShouldReadExcludePatternsFromFiles(t *testing.T) { -	tmpfile1, err := ioutil.TempFile("", "excludetest") +	tmpfile1, err := os.CreateTemp("", "excludetest")  	if err != nil {  		t.Fatal(err)  	} @@ -31,7 +30,7 @@ func TestShouldReadExcludePatternsFromFiles(t *testing.T) {  	defer os.Remove(exclude1)  	defer tmpfile1.Close() -	tmpfile2, err := ioutil.TempFile("", "excludetest") +	tmpfile2, err := os.CreateTemp("", "excludetest")  	if err != nil {  		t.Fatal(err)  	} diff --git a/internal/nametransform/diriv.go b/internal/nametransform/diriv.go index 7929c40..5dd4940 100644 --- a/internal/nametransform/diriv.go +++ b/internal/nametransform/diriv.go @@ -67,7 +67,7 @@ func fdReadDirIV(fd *os.File) (iv []byte, err error) {  func WriteDirIVAt(dirfd int) error {  	iv := cryptocore.RandBytes(DirIVLen)  	// 0400 permissions: gocryptfs.diriv should never be modified after creation. -	// Don't use "ioutil.WriteFile", it causes trouble on NFS: +	// Don't use "os.WriteFile", it causes trouble on NFS:  	// https://github.com/rfjakob/gocryptfs/commit/7d38f80a78644c8ec4900cc990bfb894387112ed  	fd, err := syscallcompat.Openat(dirfd, DirIVFilename, os.O_WRONLY|os.O_CREATE|os.O_EXCL, dirivPerms)  	if err != nil { diff --git a/internal/nametransform/pad16.go b/internal/nametransform/pad16.go index 833be0e..2c2466a 100644 --- a/internal/nametransform/pad16.go +++ b/internal/nametransform/pad16.go @@ -32,10 +32,10 @@ func pad16(orig []byte) (padded []byte) {  func unPad16(padded []byte) ([]byte, error) {  	oldLen := len(padded)  	if oldLen == 0 { -		return nil, errors.New("Empty input") +		return nil, errors.New("empty input")  	}  	if oldLen%aes.BlockSize != 0 { -		return nil, errors.New("Unaligned size") +		return nil, errors.New("unaligned size")  	}  	// The last byte is always a padding byte  	padByte := padded[oldLen-1] @@ -43,20 +43,20 @@ func unPad16(padded []byte) ([]byte, error) {  	padLen := int(padByte)  	// Padding must be at least 1 byte  	if padLen == 0 { -		return nil, errors.New("Padding cannot be zero-length") +		return nil, errors.New("padding cannot be zero-length")  	}  	// Padding more than 16 bytes make no sense  	if padLen > aes.BlockSize { -		return nil, fmt.Errorf("Padding too long, padLen=%d > 16", padLen) +		return nil, fmt.Errorf("padding too long, padLen=%d > 16", padLen)  	}  	// Padding cannot be as long as (or longer than) the whole string,  	if padLen >= oldLen { -		return nil, fmt.Errorf("Padding too long, oldLen=%d >= padLen=%d", oldLen, padLen) +		return nil, fmt.Errorf("padding too long, oldLen=%d >= padLen=%d", oldLen, padLen)  	}  	// All padding bytes must be identical  	for i := oldLen - padLen; i < oldLen; i++ {  		if padded[i] != padByte { -			return nil, fmt.Errorf("Padding byte at i=%d is invalid", i) +			return nil, fmt.Errorf("padding byte at i=%d is invalid", i)  		}  	}  	newLen := oldLen - padLen diff --git a/internal/speed/cpuinfo.go b/internal/speed/cpuinfo.go index df3177d..636a4f0 100644 --- a/internal/speed/cpuinfo.go +++ b/internal/speed/cpuinfo.go @@ -1,7 +1,7 @@  package speed  import ( -	"io/ioutil" +	"io"  	"os"  	"runtime"  	"strings" @@ -33,7 +33,7 @@ func cpuModelName() string {  	if err != nil {  		return ""  	} -	content, err := ioutil.ReadAll(f) +	content, err := io.ReadAll(f)  	if err != nil {  		return ""  	} diff --git a/internal/syscallcompat/asuser_linux.go b/internal/syscallcompat/asuser_linux.go index 804a898..39e3ff2 100644 --- a/internal/syscallcompat/asuser_linux.go +++ b/internal/syscallcompat/asuser_linux.go @@ -2,7 +2,7 @@ package syscallcompat  import (  	"fmt" -	"io/ioutil" +	"os"  	"runtime"  	"strconv"  	"strings" @@ -55,7 +55,7 @@ func asUser(f func() (int, error), context *fuse.Context) (int, error) {  func getSupplementaryGroups(pid uint32) (gids []int) {  	procPath := fmt.Sprintf("/proc/%d/task/%d/status", pid, pid) -	blob, err := ioutil.ReadFile(procPath) +	blob, err := os.ReadFile(procPath)  	if err != nil {  		return nil  	} diff --git a/internal/syscallcompat/getdents_test.go b/internal/syscallcompat/getdents_test.go index eb670d6..c9e6a99 100644 --- a/internal/syscallcompat/getdents_test.go +++ b/internal/syscallcompat/getdents_test.go @@ -4,7 +4,6 @@  package syscallcompat  import ( -	"io/ioutil"  	"os"  	"runtime"  	"strings" @@ -49,13 +48,13 @@ func testGetdents(t *testing.T) {  		getdentsUnderTest = emulateGetdents  	}  	// Fill a directory with filenames of length 1 ... 255 -	testDir, err := ioutil.TempDir(tmpDir, "TestGetdents") +	testDir, err := os.MkdirTemp(tmpDir, "TestGetdents")  	if err != nil {  		t.Fatal(err)  	}  	for i := 1; i <= unix.NAME_MAX; i++ {  		n := strings.Repeat("x", i) -		err = ioutil.WriteFile(testDir+"/"+n, nil, 0600) +		err = os.WriteFile(testDir+"/"+n, nil, 0600)  		if err != nil {  			t.Fatal(err)  		} diff --git a/internal/syscallcompat/main_test.go b/internal/syscallcompat/main_test.go index ddf6bc4..7183f5a 100644 --- a/internal/syscallcompat/main_test.go +++ b/internal/syscallcompat/main_test.go @@ -2,7 +2,6 @@ package syscallcompat  import (  	"fmt" -	"io/ioutil"  	"os"  	"testing"  ) @@ -23,7 +22,7 @@ func TestMain(m *testing.M) {  		fmt.Println(err)  		os.Exit(1)  	} -	tmpDir, err = ioutil.TempDir(parent, "syscallcompat") +	tmpDir, err = os.MkdirTemp(parent, "syscallcompat")  	if err != nil {  		fmt.Println(err)  		os.Exit(1) diff --git a/tests/cli/cli_test.go b/tests/cli/cli_test.go index fb09338..01cc3b7 100644 --- a/tests/cli/cli_test.go +++ b/tests/cli/cli_test.go @@ -6,7 +6,6 @@ import (  	"encoding/hex"  	"errors"  	"fmt" -	"io/ioutil"  	"os"  	"os/exec"  	"strconv" @@ -174,7 +173,7 @@ func TestPasswd(t *testing.T) {  	// Add content  	test_helpers.MountOrFatal(t, dir, mnt, "-extpass", "echo test")  	file1 := mnt + "/file1" -	err := ioutil.WriteFile(file1, []byte("somecontent"), 0600) +	err := os.WriteFile(file1, []byte("somecontent"), 0600)  	if err != nil {  		t.Fatal(err)  	} @@ -186,7 +185,7 @@ func TestPasswd(t *testing.T) {  	testPasswd(t, dir)  	// Mount and verify  	test_helpers.MountOrFatal(t, dir, mnt, "-extpass", "echo newpasswd") -	content, err := ioutil.ReadFile(file1) +	content, err := os.ReadFile(file1)  	if err != nil {  		t.Error(err)  	} else if string(content) != "somecontent" { @@ -201,12 +200,12 @@ func TestPasswd(t *testing.T) {  // cp copies file at `src` to `dst`, overwriting  // `dst` if it already exists. Calls t.Fatal on failure.  func cp(t *testing.T, src string, dst string) { -	conf, err := ioutil.ReadFile(src) +	conf, err := os.ReadFile(src)  	if err != nil {  		t.Fatal(err)  	}  	syscall.Unlink(dst) -	err = ioutil.WriteFile(dst, conf, 0600) +	err = os.WriteFile(dst, conf, 0600)  	if err != nil {  		t.Fatal(err)  	} @@ -222,7 +221,7 @@ func TestPasswdMasterkey(t *testing.T) {  	mnt := dir + ".mnt"  	test_helpers.MountOrFatal(t, dir, mnt, "-extpass", "echo test")  	file1 := mnt + "/file1" -	err := ioutil.WriteFile(file1, []byte("somecontent"), 0600) +	err := os.WriteFile(file1, []byte("somecontent"), 0600)  	if err != nil {  		t.Fatal(err)  	} @@ -251,7 +250,7 @@ func TestPasswdMasterkey(t *testing.T) {  	}  	// Mount and verify  	test_helpers.MountOrFatal(t, dir, mnt, "-extpass", "echo newpasswd") -	content, err := ioutil.ReadFile(file1) +	content, err := os.ReadFile(file1)  	if err != nil {  		t.Error(err)  	} else if string(content) != "somecontent" { @@ -270,7 +269,7 @@ func TestPasswdMasterkeyStdin(t *testing.T) {  	mnt := dir + ".mnt"  	test_helpers.MountOrFatal(t, dir, mnt, "-extpass", "echo test")  	file1 := mnt + "/file1" -	err := ioutil.WriteFile(file1, []byte("somecontent"), 0600) +	err := os.WriteFile(file1, []byte("somecontent"), 0600)  	if err != nil {  		t.Fatal(err)  	} @@ -300,7 +299,7 @@ func TestPasswdMasterkeyStdin(t *testing.T) {  	}  	// Mount and verify  	test_helpers.MountOrFatal(t, dir, mnt, "-extpass", "echo newpasswd") -	content, err := ioutil.ReadFile(file1) +	content, err := os.ReadFile(file1)  	if err != nil {  		t.Fatal(err)  	} else if string(content) != "somecontent" { @@ -392,7 +391,7 @@ func TestNonempty(t *testing.T) {  	if err != nil {  		t.Fatal(err)  	} -	err = ioutil.WriteFile(mnt+"/somefile", []byte("xyz"), 0600) +	err = os.WriteFile(mnt+"/somefile", []byte("xyz"), 0600)  	if err != nil {  		t.Fatal(err)  	} @@ -586,7 +585,7 @@ func TestNoexec(t *testing.T) {  	content := `#!/bin/bash  echo hello  ` -	err := ioutil.WriteFile(sh, []byte(content), 0755) +	err := os.WriteFile(sh, []byte(content), 0755)  	if err != nil {  		t.Fatal(err)  	} @@ -697,13 +696,13 @@ func TestNotIdle(t *testing.T) {  	if err != nil {  		t.Fatal(err)  	} -	err = ioutil.WriteFile(mnt+"/foo", []byte("foo"), 0600) +	err = os.WriteFile(mnt+"/foo", []byte("foo"), 0600)  	if err != nil {  		t.Fatal(err)  	}  	// Read every 10 milliseconds for a total of 1 second  	for i := 1; i < 100; i++ { -		_, err = ioutil.ReadFile(mnt + "/foo") +		_, err = os.ReadFile(mnt + "/foo")  		if err != nil {  			t.Fatalf("iteration %d failed: %v", i, err)  		} @@ -784,7 +783,7 @@ func TestBadname(t *testing.T) {  	file := mnt + "/" + validFileName  	// Case 1: write one valid filename (empty content) -	err := ioutil.WriteFile(file, nil, 0600) +	err := os.WriteFile(file, nil, 0600)  	if err != nil {  		t.Fatal(err)  	} @@ -809,26 +808,26 @@ func TestBadname(t *testing.T) {  	}  	//Generate valid cipherdata for all cases  	for i := 0; i < len(contentCipher); i++ { -		err := ioutil.WriteFile(file, []byte(fmt.Sprintf("Content Case %d.", i+1)), 0600) +		err := os.WriteFile(file, []byte(fmt.Sprintf("Content Case %d.", i+1)), 0600)  		if err != nil {  			t.Fatal(err)  		}  		//save the cipher data for file operations in cipher dir -		contentCipher[i], err = ioutil.ReadFile(dir + "/" + encryptedfilename) +		contentCipher[i], err = os.ReadFile(dir + "/" + encryptedfilename)  		if err != nil {  			t.Fatal(err)  		}  	}  	//re-write content for case 1 -	err = ioutil.WriteFile(file, []byte("Content Case 1."), 0600) +	err = os.WriteFile(file, []byte("Content Case 1."), 0600)  	if err != nil {  		t.Fatal(err)  	}  	// Case 2: File with invalid suffix in plain name but valid cipher file  	file = mnt + "/" + validFileName + nametransform.BadnameSuffix -	err = ioutil.WriteFile(file, []byte("Content Case 2."), 0600) +	err = os.WriteFile(file, []byte("Content Case 2."), 0600)  	if err != nil {  		t.Fatal(err)  	} @@ -842,29 +841,29 @@ func TestBadname(t *testing.T) {  	// Case 3 is impossible: only BadnameSuffix would mean the cipher name is valid  	// Case 4: write invalid file which should be decodable -	err = ioutil.WriteFile(dir+"/"+encryptedfilename+invalidSuffix, contentCipher[3], 0600) +	err = os.WriteFile(dir+"/"+encryptedfilename+invalidSuffix, contentCipher[3], 0600)  	if err != nil {  		t.Fatal(err)  	}  	//Case 5: write invalid file which is not decodable (replace last 2 bytes with percent sign) -	err = ioutil.WriteFile(dir+"/"+encryptedfilename[:len(encryptedfilename)-2]+"%%"+invalidSuffix, contentCipher[4], 0600) +	err = os.WriteFile(dir+"/"+encryptedfilename[:len(encryptedfilename)-2]+"%%"+invalidSuffix, contentCipher[4], 0600)  	if err != nil {  		t.Fatal(err)  	}  	// Case 6: Multiple possible matches  	// generate two files with invalid cipher names which can both match the badname pattern -	err = ioutil.WriteFile(dir+"/mzaZRF9_0IU-_5vv2wPC"+invalidSuffix, contentCipher[5], 0600) +	err = os.WriteFile(dir+"/mzaZRF9_0IU-_5vv2wPC"+invalidSuffix, contentCipher[5], 0600)  	if err != nil {  		t.Fatal(err)  	} -	err = ioutil.WriteFile(dir+"/mzaZRF9_0IU-_5vv2wP"+invalidSuffix, contentCipher[5], 0600) +	err = os.WriteFile(dir+"/mzaZRF9_0IU-_5vv2wP"+invalidSuffix, contentCipher[5], 0600)  	if err != nil {  		t.Fatal(err)  	}  	// Case 7: Non-Matching badname pattern -	err = ioutil.WriteFile(dir+"/"+encryptedfilename+"wrongPattern", contentCipher[6], 0600) +	err = os.WriteFile(dir+"/"+encryptedfilename+"wrongPattern", contentCipher[6], 0600)  	if err != nil {  		t.Fatal(err)  	} @@ -894,7 +893,7 @@ func TestBadname(t *testing.T) {  	for _, name := range names {  		if name == searchstrings[0] {  			//Case 1: Test access -			filebytes, err = ioutil.ReadFile(mnt + "/" + name) +			filebytes, err = os.ReadFile(mnt + "/" + name)  			if err != nil {  				t.Fatal(err)  			} @@ -905,7 +904,7 @@ func TestBadname(t *testing.T) {  		} else if name == searchstrings[1] {  			//Case 2: Test Access -			filebytes, err = ioutil.ReadFile(mnt + "/" + name) +			filebytes, err = os.ReadFile(mnt + "/" + name)  			if err != nil {  				t.Fatal(err)  			} @@ -915,7 +914,7 @@ func TestBadname(t *testing.T) {  			}  		} else if name == searchstrings[3] {  			//Case 4: Test Access -			filebytes, err = ioutil.ReadFile(mnt + "/" + name) +			filebytes, err = os.ReadFile(mnt + "/" + name)  			if err != nil {  				t.Fatal(err)  			} @@ -925,7 +924,7 @@ func TestBadname(t *testing.T) {  			}  		} else if name == searchstrings[4] {  			//Case 5: Test Access -			filebytes, err = ioutil.ReadFile(mnt + "/" + name) +			filebytes, err = os.ReadFile(mnt + "/" + name)  			if err != nil {  				t.Fatal(err)  			} @@ -955,7 +954,7 @@ func TestPassfile(t *testing.T) {  	dir := test_helpers.InitFS(t)  	mnt := dir + ".mnt"  	passfile1 := mnt + ".1.txt" -	ioutil.WriteFile(passfile1, []byte("test"), 0600) +	os.WriteFile(passfile1, []byte("test"), 0600)  	test_helpers.MountOrFatal(t, dir, mnt, "-passfile="+passfile1)  	defer test_helpers.UnmountPanic(mnt)  } @@ -966,8 +965,8 @@ func TestPassfileX2(t *testing.T) {  	mnt := dir + ".mnt"  	passfile1 := mnt + ".1.txt"  	passfile2 := mnt + ".2.txt" -	ioutil.WriteFile(passfile1, []byte("te"), 0600) -	ioutil.WriteFile(passfile2, []byte("st"), 0600) +	os.WriteFile(passfile1, []byte("te"), 0600) +	os.WriteFile(passfile2, []byte("st"), 0600)  	test_helpers.MountOrFatal(t, dir, mnt, "-passfile="+passfile1, "-passfile="+passfile2)  	defer test_helpers.UnmountPanic(mnt)  } @@ -979,7 +978,7 @@ func TestInitNotEmpty(t *testing.T) {  	if err := os.Mkdir(dir, 0700); err != nil {  		t.Fatal(err)  	} -	if err := ioutil.WriteFile(dir+"/foo", nil, 0700); err != nil { +	if err := os.WriteFile(dir+"/foo", nil, 0700); err != nil {  		t.Fatal(err)  	}  	cmd := exec.Command(test_helpers.GocryptfsBinary, "-init", "-extpass", "echo test", dir) @@ -1001,7 +1000,7 @@ func TestSharedstorage(t *testing.T) {  	defer test_helpers.UnmountPanic(mnt)  	foo1 := mnt + "/foo1"  	foo2 := mnt + "/foo2" -	if err := ioutil.WriteFile(foo1, nil, 0755); err != nil { +	if err := os.WriteFile(foo1, nil, 0755); err != nil {  		t.Fatal(err)  	}  	if err := os.Link(foo1, foo2); err != nil { @@ -1020,7 +1019,7 @@ func TestSharedstorage(t *testing.T) {  	}  	// Check that we we don't have stat caching. New length should show up  	// on the hard link immediately. -	if err := ioutil.WriteFile(foo1, []byte("xxxxxx"), 0755); err != nil { +	if err := os.WriteFile(foo1, []byte("xxxxxx"), 0755); err != nil {  		t.Fatal(err)  	}  	if err := syscall.Stat(foo2, &st2); err != nil { diff --git a/tests/cli/longnamemax_test.go b/tests/cli/longnamemax_test.go index e44a84e..357ede6 100644 --- a/tests/cli/longnamemax_test.go +++ b/tests/cli/longnamemax_test.go @@ -2,7 +2,6 @@ package cli  import (  	"fmt" -	"io/ioutil"  	"os"  	"path/filepath"  	"strings" @@ -38,7 +37,7 @@ func TestLongnamemax100(t *testing.T) {  	for l := 1; l <= 255; l++ {  		path := pDir + "/" + strings.Repeat("x", l) -		if err := ioutil.WriteFile(path, nil, 0600); err != nil { +		if err := os.WriteFile(path, nil, 0600); err != nil {  			t.Fatal(err)  		}  		matches, err := filepath.Glob(cDir + "/gocryptfs.longname.*") @@ -84,7 +83,7 @@ func TestLongnamemax100Reverse(t *testing.T) {  	for l := 1; l <= 255; l++ {  		path := backingDir + "/" + strings.Repeat("x", l) -		if err := ioutil.WriteFile(path, nil, 0600); err != nil { +		if err := os.WriteFile(path, nil, 0600); err != nil {  			t.Fatal(err)  		}  		matches, err := filepath.Glob(mntDir + "/gocryptfs.longname.*") diff --git a/tests/cli/xchacha_test.go b/tests/cli/xchacha_test.go index 7f24c8b..f0fe163 100644 --- a/tests/cli/xchacha_test.go +++ b/tests/cli/xchacha_test.go @@ -2,7 +2,6 @@ package cli  import (  	"fmt" -	"io/ioutil"  	"os"  	"syscall"  	"testing" @@ -40,7 +39,7 @@ func TestXchacha(t *testing.T) {  	test_helpers.MountOrExit(cDir, pDir, "-extpass", "echo test")  	defer test_helpers.UnmountPanic(pDir) -	if err := ioutil.WriteFile(pDir+"/1byte", []byte("x"), 0700); err != nil { +	if err := os.WriteFile(pDir+"/1byte", []byte("x"), 0700); err != nil {  		t.Fatal(err)  	}  	var st syscall.Stat_t @@ -53,7 +52,7 @@ func TestXchacha(t *testing.T) {  	}  	// 1 MiB = 256 4kiB blocks -	if err := ioutil.WriteFile(pDir+"/1MiB", make([]byte, 1024*1024), 0700); err != nil { +	if err := os.WriteFile(pDir+"/1MiB", make([]byte, 1024*1024), 0700); err != nil {  		t.Fatal(err)  	}  	if err := syscall.Stat(cDir+"/1MiB", &st); err != nil { diff --git a/tests/cli/zerokey_test.go b/tests/cli/zerokey_test.go index e9b9c50..359651c 100644 --- a/tests/cli/zerokey_test.go +++ b/tests/cli/zerokey_test.go @@ -1,7 +1,6 @@  package cli  import ( -	"io/ioutil"  	"os"  	"os/exec"  	"testing" @@ -42,7 +41,7 @@ func TestZerokey(t *testing.T) {  	mnt := dir + ".mnt"  	test_helpers.MountOrFatal(t, dir, mnt, "-extpass", "echo test")  	file1 := mnt + "/file1" -	err = ioutil.WriteFile(file1, []byte("somecontent"), 0600) +	err = os.WriteFile(file1, []byte("somecontent"), 0600)  	if err != nil {  		t.Fatal(err)  	} @@ -50,7 +49,7 @@ func TestZerokey(t *testing.T) {  	// Mount using -zerokey and verify we get the same result  	test_helpers.MountOrFatal(t, dir, mnt, "-extpass", "echo test") -	content, err := ioutil.ReadFile(file1) +	content, err := os.ReadFile(file1)  	if err != nil {  		t.Error(err)  	} else if string(content) != "somecontent" { diff --git a/tests/defaults/acl_test.go b/tests/defaults/acl_test.go index 2ab5dc1..0dae018 100644 --- a/tests/defaults/acl_test.go +++ b/tests/defaults/acl_test.go @@ -1,7 +1,6 @@  package defaults  import ( -	"io/ioutil"  	"math/rand"  	"os"  	"os/exec" @@ -35,7 +34,7 @@ func TestCpA(t *testing.T) {  		var modeWant os.FileMode = os.FileMode(rand.Int31n(0777+1) | 0400)  		// Create file outside mount -		err := ioutil.WriteFile(fn1, nil, modeWant) +		err := os.WriteFile(fn1, nil, modeWant)  		if err != nil {  			t.Fatal(err)  		} @@ -45,7 +44,7 @@ func TestCpA(t *testing.T) {  			t.Fatal(err)  		}  		if fi.Mode() != modeWant { -			t.Errorf("ioutil.WriteFile created wrong permissions: want %o have %o", modeWant, fi.Mode()) +			t.Errorf("os.WriteFile created wrong permissions: want %o have %o", modeWant, fi.Mode())  		}  		// "cp -a" from outside to inside mount @@ -93,7 +92,7 @@ func TestAcl543(t *testing.T) {  	}  	// Set acl on file outside gocryptfs mount -	err := ioutil.WriteFile(fn1, nil, modeWant) +	err := os.WriteFile(fn1, nil, modeWant)  	if err != nil {  		t.Fatal(err)  	} @@ -117,7 +116,7 @@ func TestAcl543(t *testing.T) {  	}  	// Set acl on file inside gocryptfs mount -	err = ioutil.WriteFile(fn2, nil, modeWant) +	err = os.WriteFile(fn2, nil, modeWant)  	if err != nil {  		t.Fatal(err)  	} @@ -164,7 +163,7 @@ func TestAcl543(t *testing.T) {  // Check that we handle zero-sized and undersized buffers correctly  func TestXattrOverflow(t *testing.T) {  	fn := filepath.Join(test_helpers.DefaultPlainDir, t.Name()) -	ioutil.WriteFile(fn, nil, 0600) +	os.WriteFile(fn, nil, 0600)  	attr := "user.foo123"  	val := []byte("12341234") diff --git a/tests/defaults/diriv_test.go b/tests/defaults/diriv_test.go index 639b33d..48ba39a 100644 --- a/tests/defaults/diriv_test.go +++ b/tests/defaults/diriv_test.go @@ -1,7 +1,6 @@  package defaults  import ( -	"io/ioutil"  	"os"  	"sync"  	"sync/atomic" @@ -19,7 +18,7 @@ func TestDirIVRace(t *testing.T) {  	if err != nil {  		t.Fatal(err)  	} -	err = ioutil.WriteFile(dir1+"/file", nil, 0600) +	err = os.WriteFile(dir1+"/file", nil, 0600)  	if err != nil {  		t.Fatal(err)  	} @@ -31,7 +30,7 @@ func TestDirIVRace(t *testing.T) {  		t.Fatal(err)  	}  	file2 := dir2 + "/file" -	err = ioutil.WriteFile(file2, nil, 0600) +	err = os.WriteFile(file2, nil, 0600)  	if err != nil {  		t.Fatal(err)  	} diff --git a/tests/defaults/main_test.go b/tests/defaults/main_test.go index 75a5dae..a19f079 100644 --- a/tests/defaults/main_test.go +++ b/tests/defaults/main_test.go @@ -5,7 +5,6 @@ import (  	"bytes"  	"fmt"  	"io" -	"io/ioutil"  	"os"  	"os/exec"  	"path/filepath" @@ -176,7 +175,7 @@ func TestXfs124(t *testing.T) {  func TestWrite0200File(t *testing.T) {  	fn := test_helpers.DefaultPlainDir + "/TestWrite0200File" -	err := ioutil.WriteFile(fn, nil, 0200) +	err := os.WriteFile(fn, nil, 0200)  	if err != nil {  		t.Fatalf("creating empty file failed: %v", err)  	} @@ -212,7 +211,7 @@ func TestWrite0200File(t *testing.T) {  // Now we return EOPNOTSUPP and mv is happy.  func TestMvWarnings(t *testing.T) {  	fn := test_helpers.TmpDir + "/TestMvWarnings" -	err := ioutil.WriteFile(fn, nil, 0600) +	err := os.WriteFile(fn, nil, 0600)  	if err != nil {  		t.Fatalf("creating file failed: %v", err)  	} @@ -257,7 +256,7 @@ func TestMvWarningSymlink(t *testing.T) {  // See TestMvWarnings.  func TestCpWarnings(t *testing.T) {  	fn := test_helpers.TmpDir + "/TestCpWarnings" -	err := ioutil.WriteFile(fn, []byte("foo"), 0600) +	err := os.WriteFile(fn, []byte("foo"), 0600)  	if err != nil {  		t.Fatalf("creating file failed: %v", err)  	} diff --git a/tests/defaults/overlayfs_test.go b/tests/defaults/overlayfs_test.go index 8cb773d..2b374b1 100644 --- a/tests/defaults/overlayfs_test.go +++ b/tests/defaults/overlayfs_test.go @@ -4,7 +4,6 @@  package defaults  import ( -	"io/ioutil"  	"os"  	"strings"  	"testing" @@ -43,7 +42,7 @@ func TestRenameWhiteout(t *testing.T) {  		for _, n := range names {  			pSrc := test_helpers.DefaultPlainDir + "/" + n[0]  			pDst := test_helpers.DefaultPlainDir + "/" + n[1] -			if err := ioutil.WriteFile(pSrc, nil, 0200); err != nil { +			if err := os.WriteFile(pSrc, nil, 0200); err != nil {  				t.Fatalf("creating empty file failed: %v", err)  			}  			err := unix.Renameat2(-1, pSrc, -1, pDst, flags) @@ -96,10 +95,10 @@ func TestRenameExchange(t *testing.T) {  	for _, n := range names {  		pSrc := test_helpers.DefaultPlainDir + "/" + n[0]  		pDst := test_helpers.DefaultPlainDir + "/" + n[1] -		if err := ioutil.WriteFile(pSrc, nil, 0200); err != nil { +		if err := os.WriteFile(pSrc, nil, 0200); err != nil {  			t.Fatalf("creating empty file failed: %v", err)  		} -		if err := ioutil.WriteFile(pDst, nil, 0200); err != nil { +		if err := os.WriteFile(pDst, nil, 0200); err != nil {  			t.Fatalf("creating empty file failed: %v", err)  		}  		err := unix.Renameat2(-1, pSrc, -1, pDst, unix.RENAME_EXCHANGE) diff --git a/tests/defaults/performance_test.go b/tests/defaults/performance_test.go index 11d827f..8bae5c1 100644 --- a/tests/defaults/performance_test.go +++ b/tests/defaults/performance_test.go @@ -4,7 +4,6 @@ package defaults  import (  	"fmt"  	"io" -	"io/ioutil"  	"os"  	"testing" @@ -96,7 +95,7 @@ func createFiles(t *testing.B, count int, size int) {  	for i = 0; i < count; i++ {  		file := fmt.Sprintf("%s/%d", dir, i)  		if size > 0 { -			err = ioutil.WriteFile(file, buf, 0666) +			err = os.WriteFile(file, buf, 0666)  		} else {  			var fh *os.File  			fh, err = os.Create(file) diff --git a/tests/deterministic_names/deterministic_names_test.go b/tests/deterministic_names/deterministic_names_test.go index 00d80fc..330cfc3 100644 --- a/tests/deterministic_names/deterministic_names_test.go +++ b/tests/deterministic_names/deterministic_names_test.go @@ -4,7 +4,6 @@ package deterministic_names  import (  	"fmt" -	"io/ioutil"  	"os"  	"path/filepath"  	"testing" @@ -70,7 +69,7 @@ func TestDeterministicNames(t *testing.T) {  	if err := os.RemoveAll(pDir + "/foo"); err != nil {  		t.Fatal(err)  	} -	if err := ioutil.WriteFile(pDir+"/foo", nil, 0700); err != nil { +	if err := os.WriteFile(pDir+"/foo", nil, 0700); err != nil {  		t.Fatal(err)  	}  	_, err = os.Stat(cDir + "/" + fooEncrypted) diff --git a/tests/example_filesystems/example_test_helpers.go b/tests/example_filesystems/example_test_helpers.go index c56d75a..34e5786 100644 --- a/tests/example_filesystems/example_test_helpers.go +++ b/tests/example_filesystems/example_test_helpers.go @@ -1,7 +1,6 @@  package example_filesystems  import ( -	"io/ioutil"  	"os"  	"path/filepath"  	"testing" @@ -15,7 +14,7 @@ const statusTxtContent = "It works!\n"  func checkExampleFS(t *testing.T, dir string, rw bool) {  	// Read regular file  	statusFile := filepath.Join(dir, "status.txt") -	contentBytes, err := ioutil.ReadFile(statusFile) +	contentBytes, err := os.ReadFile(statusFile)  	if err != nil {  		t.Error(err)  		return @@ -68,7 +67,7 @@ func checkExampleFSrw(t *testing.T, dir string, rw bool) {  		"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +  		"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +  		"xxxxxxxxxxxxxxxxxxxxxxxx" -	contentBytes, err := ioutil.ReadFile(filepath.Join(dir, longname)) +	contentBytes, err := os.ReadFile(filepath.Join(dir, longname))  	if err != nil {  		t.Error(err)  		return diff --git a/tests/hkdf_sanity/sanity_test.go b/tests/hkdf_sanity/sanity_test.go index f221439..27a1085 100644 --- a/tests/hkdf_sanity/sanity_test.go +++ b/tests/hkdf_sanity/sanity_test.go @@ -4,7 +4,6 @@  package hkdf_sanity  import ( -	"io/ioutil"  	"os"  	"testing" @@ -15,7 +14,7 @@ func TestBrokenContent(t *testing.T) {  	cDir := "broken_content"  	pDir := test_helpers.TmpDir + "/" + cDir  	test_helpers.MountOrFatal(t, cDir, pDir, "-extpass", "echo test", "-wpanic=false") -	_, err := ioutil.ReadFile(pDir + "/status.txt") +	_, err := os.ReadFile(pDir + "/status.txt")  	if err == nil {  		t.Error("this should fail")  	} diff --git a/tests/matrix/matrix_test.go b/tests/matrix/matrix_test.go index 417e126..b406517 100644 --- a/tests/matrix/matrix_test.go +++ b/tests/matrix/matrix_test.go @@ -10,7 +10,6 @@ import (  	"bytes"  	"flag"  	"fmt" -	"io/ioutil"  	"math/rand"  	"os"  	"os/exec" @@ -327,7 +326,7 @@ func TestFileHoles(t *testing.T) {  	foo := []byte("foo")  	file.Write(foo)  	file.WriteAt(foo, 4096) -	_, err = ioutil.ReadFile(fn) +	_, err = os.ReadFile(fn)  	if err != nil {  		t.Error(err)  	} @@ -391,7 +390,7 @@ func TestRmwRace(t *testing.T) {  		// but it must not be  		// [oooooossss] -		buf, _ := ioutil.ReadFile(fn) +		buf, _ := os.ReadFile(fn)  		m := test_helpers.Md5hex(buf)  		goodMd5[m] = goodMd5[m] + 1 @@ -495,7 +494,7 @@ func TestNameLengths(t *testing.T) {  }  func TestLongNames(t *testing.T) { -	fi, err := ioutil.ReadDir(test_helpers.DefaultCipherDir) +	fi, err := os.ReadDir(test_helpers.DefaultCipherDir)  	if err != nil {  		t.Fatal(err)  	} @@ -607,7 +606,7 @@ func TestLongNames(t *testing.T) {  		t.Error(err)  	}  	// Check for orphaned files -	fi, err = ioutil.ReadDir(test_helpers.DefaultCipherDir) +	fi, err = os.ReadDir(test_helpers.DefaultCipherDir)  	if err != nil {  		t.Fatal(err)  	} @@ -740,7 +739,7 @@ func doTestUtimesNano(t *testing.T, path string) {  // Set nanoseconds by path, normal file  func TestUtimesNano(t *testing.T) {  	path := test_helpers.DefaultPlainDir + "/utimesnano" -	err := ioutil.WriteFile(path, []byte("foobar"), 0600) +	err := os.WriteFile(path, []byte("foobar"), 0600)  	if err != nil {  		t.Fatal(err)  	} @@ -788,7 +787,7 @@ func TestMagicNames(t *testing.T) {  		t.Logf("Testing n=%q", n)  		p := test_helpers.DefaultPlainDir + "/" + n  		// Create file -		err := ioutil.WriteFile(p, []byte("xxxxxxx"), 0200) +		err := os.WriteFile(p, []byte("xxxxxxx"), 0200)  		if err != nil {  			t.Fatalf("creating file %q failed: %v", n, err)  		} @@ -825,7 +824,7 @@ func TestMagicNames(t *testing.T) {  		syscall.Unlink(p)  		// Link  		target := test_helpers.DefaultPlainDir + "/linktarget" -		err = ioutil.WriteFile(target, []byte("yyyyy"), 0600) +		err = os.WriteFile(target, []byte("yyyyy"), 0600)  		if err != nil {  			t.Fatal(err)  		} diff --git a/tests/plaintextnames/plaintextnames_test.go b/tests/plaintextnames/plaintextnames_test.go index 4de0730..a755deb 100644 --- a/tests/plaintextnames/plaintextnames_test.go +++ b/tests/plaintextnames/plaintextnames_test.go @@ -4,7 +4,6 @@ package plaintextnames  import (  	"fmt" -	"io/ioutil"  	"os"  	"syscall"  	"testing" @@ -63,7 +62,7 @@ func TestDirIV(t *testing.T) {  // else should work.  func TestFiltered(t *testing.T) {  	filteredFile := pDir + "/gocryptfs.conf" -	err := ioutil.WriteFile(filteredFile, []byte("foo"), 0777) +	err := os.WriteFile(filteredFile, []byte("foo"), 0777)  	if err == nil {  		t.Errorf("should have failed but didn't")  	} @@ -71,11 +70,11 @@ func TestFiltered(t *testing.T) {  	if err == nil {  		t.Errorf("should have failed but didn't")  	} -	err = ioutil.WriteFile(pDir+"/gocryptfs.diriv", []byte("foo"), 0777) +	err = os.WriteFile(pDir+"/gocryptfs.diriv", []byte("foo"), 0777)  	if err != nil {  		t.Error(err)  	} -	subDir, err := ioutil.TempDir(pDir, "") +	subDir, err := os.MkdirTemp(pDir, "")  	if err != nil {  		t.Fatal(err)  	} diff --git a/tests/reverse/correctness_test.go b/tests/reverse/correctness_test.go index e4684df..4028ac3 100644 --- a/tests/reverse/correctness_test.go +++ b/tests/reverse/correctness_test.go @@ -3,7 +3,6 @@ package reverse_test  import (  	"bytes"  	"fmt" -	"io/ioutil"  	"os"  	"path/filepath"  	"strings" @@ -72,7 +71,7 @@ func TestSymlinkDentrySize(t *testing.T) {  	}  	symlink := "a_symlink" -	mnt, err := ioutil.TempDir(test_helpers.TmpDir, "reverse_mnt_") +	mnt, err := os.MkdirTemp(test_helpers.TmpDir, "reverse_mnt_")  	if err != nil {  		t.Fatal(err)  	} @@ -111,7 +110,7 @@ func TestConfigMapping(t *testing.T) {  	if !test_helpers.VerifyExistence(t, c) {  		t.Errorf("%s missing", c)  	} -	data, err := ioutil.ReadFile(c) +	data, err := os.ReadFile(c)  	if err != nil {  		t.Fatal(err)  	} @@ -233,7 +232,7 @@ func Test0100Dir(t *testing.T) {  		t.Fatal(err)  	}  	file := dir + "/hello" -	err = ioutil.WriteFile(file, []byte("hello"), 0600) +	err = os.WriteFile(file, []byte("hello"), 0600)  	if err != nil {  		t.Fatal(err)  	} @@ -328,7 +327,7 @@ func TestHardlinkedLongname(t *testing.T) {  	workdirA, workdirB := newWorkdir(t)  	long1 := workdirA + "/" + strings.Repeat("x", 200) -	if err := ioutil.WriteFile(long1, []byte("hello"), 0600); err != nil { +	if err := os.WriteFile(long1, []byte("hello"), 0600); err != nil {  		t.Fatal(err)  	}  	var long1_stat syscall.Stat_t diff --git a/tests/reverse/ctlsock_test.go b/tests/reverse/ctlsock_test.go index f59fa45..8f9d843 100644 --- a/tests/reverse/ctlsock_test.go +++ b/tests/reverse/ctlsock_test.go @@ -1,7 +1,7 @@  package reverse_test  import ( -	"io/ioutil" +	"os"  	"syscall"  	"testing" @@ -28,7 +28,7 @@ func TestCtlSockPathOps(t *testing.T) {  	if plaintextnames {  		t.Skip("this only tests encrypted names")  	} -	mnt, err := ioutil.TempDir(test_helpers.TmpDir, "reverse_mnt_") +	mnt, err := os.MkdirTemp(test_helpers.TmpDir, "reverse_mnt_")  	if err != nil {  		t.Fatal(err)  	} @@ -74,7 +74,7 @@ func TestCtlSockCrash(t *testing.T) {  	if plaintextnames {  		t.Skip("this only tests encrypted names")  	} -	mnt, err := ioutil.TempDir(test_helpers.TmpDir, "reverse_mnt_") +	mnt, err := os.MkdirTemp(test_helpers.TmpDir, "reverse_mnt_")  	if err != nil {  		t.Fatal(err)  	} diff --git a/tests/reverse/force_owner_test.go b/tests/reverse/force_owner_test.go index 6e47b50..aeb0a4e 100644 --- a/tests/reverse/force_owner_test.go +++ b/tests/reverse/force_owner_test.go @@ -1,7 +1,6 @@  package reverse_test  import ( -	"io/ioutil"  	"net/url"  	"os"  	"syscall" @@ -13,7 +12,7 @@ import (  func TestForceOwner(t *testing.T) {  	// Let's not explode with "TempDir: pattern contains path separator"  	myEscapedName := url.PathEscape(t.Name()) -	mnt, err := ioutil.TempDir(test_helpers.TmpDir, myEscapedName) +	mnt, err := os.MkdirTemp(test_helpers.TmpDir, myEscapedName)  	if err != nil {  		t.Fatal(err)  	} diff --git a/tests/reverse/one_file_system_test.go b/tests/reverse/one_file_system_test.go index 61190ea..5bc965f 100644 --- a/tests/reverse/one_file_system_test.go +++ b/tests/reverse/one_file_system_test.go @@ -17,7 +17,7 @@ func TestOneFileSystem(t *testing.T) {  	}  	// Let's not explode with "TempDir: pattern contains path separator"  	myEscapedName := url.PathEscape(t.Name()) -	mnt, err := ioutil.TempDir(test_helpers.TmpDir, myEscapedName) +	mnt, err := os.MkdirTemp(test_helpers.TmpDir, myEscapedName)  	if err != nil {  		t.Fatal(err)  	} diff --git a/tests/reverse/xattr_test.go b/tests/reverse/xattr_test.go index 8002604..a459808 100644 --- a/tests/reverse/xattr_test.go +++ b/tests/reverse/xattr_test.go @@ -2,7 +2,7 @@ package reverse_test  import (  	"fmt" -	"io/ioutil" +	"os"  	"path/filepath"  	"syscall"  	"testing" @@ -29,7 +29,7 @@ func TestXattrList(t *testing.T) {  		t.Skip()  	}  	fnA := filepath.Join(dirA, t.Name()) -	err := ioutil.WriteFile(fnA, nil, 0700) +	err := os.WriteFile(fnA, nil, 0700)  	if err != nil {  		t.Fatalf("creating empty file failed: %v", err)  	} diff --git a/tests/root_test/issue893_test.go b/tests/root_test/issue893_test.go index 6ad8e6d..2db0b19 100644 --- a/tests/root_test/issue893_test.go +++ b/tests/root_test/issue893_test.go @@ -4,7 +4,6 @@ package root_test  import (  	"fmt" -	"io/ioutil"  	"os"  	"sync"  	"syscall" @@ -35,10 +34,10 @@ func TestConcurrentUserOps(t *testing.T) {  				if err = os.MkdirAll(d, 0700); err != nil {  					return  				} -				if err = ioutil.WriteFile(d+"/foo", nil, 0400); err != nil { +				if err = os.WriteFile(d+"/foo", nil, 0400); err != nil {  					return  				} -				if err = ioutil.WriteFile(d+"/bar", []byte("aaaaaaaaaaaaaaaaaaaaa"), 0400); err != nil { +				if err = os.WriteFile(d+"/bar", []byte("aaaaaaaaaaaaaaaaaaaaa"), 0400); err != nil {  					return  				}  				if err = syscall.Unlink(d + "/foo"); err != nil { diff --git a/tests/root_test/root_test.go b/tests/root_test/root_test.go index 9ce1f4b..7bc3ebc 100644 --- a/tests/root_test/root_test.go +++ b/tests/root_test/root_test.go @@ -5,7 +5,6 @@  package root_test  import ( -	"io/ioutil"  	"os"  	"os/exec"  	"path/filepath" @@ -203,7 +202,7 @@ func TestDiskFull(t *testing.T) {  	}  	t.Logf("sz1=%d, sz2=%d", sz1, sz2) -	foo1, err := ioutil.ReadFile(mnt + "/foo1") +	foo1, err := os.ReadFile(mnt + "/foo1")  	if err != nil {  		t.Fatal(err)  	} @@ -211,7 +210,7 @@ func TestDiskFull(t *testing.T) {  		t.Fail()  	} -	foo2, err := ioutil.ReadFile(mnt + "/foo2") +	foo2, err := os.ReadFile(mnt + "/foo2")  	if err != nil {  		t.Fatal(err)  	} @@ -231,7 +230,7 @@ func TestAcl(t *testing.T) {  	defer test_helpers.UnmountPanic(pDir)  	f1 := pDir + "/f1" -	if err := ioutil.WriteFile(f1, []byte("hello world\n"), 000); err != nil { +	if err := os.WriteFile(f1, []byte("hello world\n"), 000); err != nil {  		t.Fatal(err)  	} diff --git a/tests/test_helpers/helpers.go b/tests/test_helpers/helpers.go index 0d21548..c8cd151 100644 --- a/tests/test_helpers/helpers.go +++ b/tests/test_helpers/helpers.go @@ -5,7 +5,6 @@ import (  	"crypto/md5"  	"encoding/hex"  	"fmt" -	"io/ioutil"  	"log"  	"os"  	"os/exec" @@ -55,7 +54,7 @@ func doInit() {  		fmt.Printf("test_helpers: warning: testParentDir %q does not reside on ext4, we will miss failures caused by ino reuse\n", testParentDir)  	}  	var err error -	TmpDir, err = ioutil.TempDir(testParentDir, "") +	TmpDir, err = os.MkdirTemp(testParentDir, "")  	if err != nil {  		panic(err)  	} @@ -73,7 +72,7 @@ func doInit() {  //	    *-- gocryptfs.diriv  func ResetTmpDir(createDirIV bool) {  	// Try to unmount and delete everything -	entries, err := ioutil.ReadDir(TmpDir) +	entries, err := os.ReadDir(TmpDir)  	if err == nil {  		for _, e := range entries {  			d := filepath.Join(TmpDir, e.Name()) @@ -148,7 +147,7 @@ func InitFS(t *testing.T, extraArgs ...string) string {  	if t != nil {  		prefix = t.Name() + "."  	} -	dir, err := ioutil.TempDir(TmpDir, prefix) +	dir, err := os.MkdirTemp(TmpDir, prefix)  	if err != nil {  		if t != nil {  			t.Fatal(err) @@ -178,7 +177,7 @@ func InitFS(t *testing.T, extraArgs ...string) string {  // Md5fn returns an md5 string for file "filename"  func Md5fn(filename string) string { -	buf, err := ioutil.ReadFile(filename) +	buf, err := os.ReadFile(filename)  	if err != nil {  		fmt.Printf("ReadFile: %v\n", err)  		return "" @@ -199,7 +198,7 @@ func Md5hex(buf []byte) string {  // 3) Size reported by Fstat()  func VerifySize(t *testing.T, path string, want int) {  	// Read whole file -	buf, err := ioutil.ReadFile(path) +	buf, err := os.ReadFile(path)  	if err != nil {  		t.Errorf("ReadFile failed: %v", err)  	} else if len(buf) != want { @@ -299,7 +298,7 @@ func TestMkdirRmdir(t *testing.T, plainDir string) {  func TestRename(t *testing.T, plainDir string) {  	file1 := plainDir + "/rename1"  	file2 := plainDir + "/rename2" -	err := ioutil.WriteFile(file1, []byte("content"), 0777) +	err := os.WriteFile(file1, []byte("content"), 0777)  	if err != nil {  		t.Error(err)  		return diff --git a/tests/xattr/xattr_fd_test.go b/tests/xattr/xattr_fd_test.go index f3586cf..ae53afc 100644 --- a/tests/xattr/xattr_fd_test.go +++ b/tests/xattr/xattr_fd_test.go @@ -6,7 +6,7 @@  package xattr_tests  import ( -	"io/ioutil" +	"os"  	"syscall"  	"testing" @@ -18,7 +18,7 @@ import (  func TestFdXattr(t *testing.T) {  	attr := "user.foo"  	fn := test_helpers.DefaultPlainDir + "/TestFdXattr" -	err := ioutil.WriteFile(fn, nil, 0700) +	err := os.WriteFile(fn, nil, 0700)  	if err != nil {  		t.Fatalf("creating empty file failed: %v", err)  	} diff --git a/tests/xattr/xattr_integration_test.go b/tests/xattr/xattr_integration_test.go index c968a47..1a5d540 100644 --- a/tests/xattr/xattr_integration_test.go +++ b/tests/xattr/xattr_integration_test.go @@ -10,7 +10,6 @@ import (  	"bytes"  	"encoding/base64"  	"fmt" -	"io/ioutil"  	"os"  	"strings"  	"syscall" @@ -31,7 +30,7 @@ func TestMain(m *testing.M) {  	// Write deterministic diriv so encrypted filenames are deterministic.  	os.Remove(test_helpers.DefaultCipherDir + "/gocryptfs.diriv")  	diriv := []byte("1234567890123456") -	err := ioutil.WriteFile(test_helpers.DefaultCipherDir+"/gocryptfs.diriv", diriv, 0400) +	err := os.WriteFile(test_helpers.DefaultCipherDir+"/gocryptfs.diriv", diriv, 0400)  	if err != nil {  		fmt.Println(err)  		os.Exit(1) @@ -92,7 +91,7 @@ func setGetRmList3(fn string, attr string, val []byte) error {  // Test xattr set, get, rm on a regular file.  func TestSetGetRmRegularFile(t *testing.T) {  	fn := test_helpers.DefaultPlainDir + "/TestSetGetRmRegularFile" -	err := ioutil.WriteFile(fn, []byte("12345"), 0700) +	err := os.WriteFile(fn, []byte("12345"), 0700)  	if err != nil {  		t.Fatalf("creating empty file failed: %v", err)  	} @@ -132,7 +131,7 @@ func TestSetGetRmDir(t *testing.T) {  func TestXattrSetEmpty(t *testing.T) {  	attr := "user.foo"  	fn := test_helpers.DefaultPlainDir + "/TestXattrSetEmpty1" -	err := ioutil.WriteFile(fn, nil, 0700) +	err := os.WriteFile(fn, nil, 0700)  	if err != nil {  		t.Fatalf("creating empty file failed: %v", err)  	} @@ -185,7 +184,7 @@ func TestXattrSetEmpty(t *testing.T) {  func TestXattrList(t *testing.T) {  	fn := test_helpers.DefaultPlainDir + "/TestXattrList" -	err := ioutil.WriteFile(fn, nil, 0700) +	err := os.WriteFile(fn, nil, 0700)  	if err != nil {  		t.Fatalf("creating empty file failed: %v", err)  	} @@ -236,7 +235,7 @@ func TestBase64XattrRead(t *testing.T) {  	plainFn := test_helpers.DefaultPlainDir + "/" + fileName  	encryptedFn := test_helpers.DefaultCipherDir + "/" + encryptedFileName -	err := ioutil.WriteFile(plainFn, nil, 0700) +	err := os.WriteFile(plainFn, nil, 0700)  	if err != nil {  		t.Fatalf("creating empty file failed: %v", err)  	} @@ -289,7 +288,7 @@ func TestBase64XattrRead(t *testing.T) {  // Listing xattrs should work even when we don't have read access  func TestList0000File(t *testing.T) {  	fn := test_helpers.DefaultPlainDir + "/TestList0000File" -	err := ioutil.WriteFile(fn, nil, 0000) +	err := os.WriteFile(fn, nil, 0000)  	if err != nil {  		t.Fatalf("creating empty file failed: %v", err)  	} @@ -302,7 +301,7 @@ func TestList0000File(t *testing.T) {  // Setting xattrs should work even when we don't have read access  func TestSet0200File(t *testing.T) {  	fn := test_helpers.DefaultPlainDir + "/TestSet0200File" -	err := ioutil.WriteFile(fn, nil, 0200) +	err := os.WriteFile(fn, nil, 0200)  	if err != nil {  		t.Fatalf("creating empty file failed: %v", err)  	} @@ -342,7 +341,7 @@ func TestSet0200Dir(t *testing.T) {  func TestAcl(t *testing.T) {  	fn := test_helpers.DefaultPlainDir + "/TestAcl" -	err := ioutil.WriteFile(fn, nil, 0600) +	err := os.WriteFile(fn, nil, 0600)  	if err != nil {  		t.Fatalf("creating empty file failed: %v", err)  	} @@ -374,7 +373,7 @@ func TestAcl(t *testing.T) {  // https://github.com/rfjakob/gocryptfs/issues/627  func TestSlashInName(t *testing.T) {  	fn := test_helpers.DefaultPlainDir + "/" + t.Name() -	err := ioutil.WriteFile(fn, []byte("12345"), 0700) +	err := os.WriteFile(fn, []byte("12345"), 0700)  	if err != nil {  		t.Fatalf("creating empty file failed: %v", err)  	} | 
