fix(auth): atomically secure Windows lock creation

This commit is contained in:
2026-08-16 19:01:09 +02:00
parent 25ee8b87d1
commit d17ad0e95b
6 changed files with 267 additions and 51 deletions
+5 -12
View File
@@ -58,24 +58,17 @@ func writePrivateTemporary(directory string, contents []byte) (string, error) {
return "", err
}
path := filepath.Join(directory, name)
file, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_EXCL, 0o600)
file, err := createCanonicalNewPrivateFile(path, 0o600)
if errors.Is(err, os.ErrExist) {
continue
}
if err != nil {
return "", err
}
if err := ProtectPrivateRegular(path); err != nil {
_ = file.Close()
_ = os.Remove(path)
return "", err
}
if err := file.Chmod(0o600); err == nil {
var written int
written, err = file.Write(contents)
if err == nil && written != len(contents) {
err = io.ErrShortWrite
}
var written int
written, err = file.Write(contents)
if err == nil && written != len(contents) {
err = io.ErrShortWrite
}
if err == nil {
err = file.Sync()