Smail/backend/hooks/bundle_file_windows.go
smail f732a255ce
Some checks are pending
Security Checks / security (push) Waiting to run
拆分内置插件文件的跨平台安全创建
2026-09-22 02:38:11 +08:00

40 lines
721 B
Go

//go:build windows
package hooks
import (
"bytes"
"io"
"os"
)
func writeBundledPlugin(path string, data []byte) error {
file, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_EXCL, 0600) // #nosec G304 -- the path is an entry under a private temporary bundle root.
if err != nil {
return err
}
remove := true
defer func() {
if remove {
_ = os.Remove(path)
}
}()
if _, err := io.Copy(file, bytes.NewReader(data)); err != nil {
_ = file.Close()
return err
}
if err := file.Sync(); err != nil {
_ = file.Close()
return err
}
if err := file.Chmod(0700); err != nil {
_ = file.Close()
return err
}
if err := file.Close(); err != nil {
return err
}
remove = false
return nil
}