handle tmp noexec fixes #32
This commit is contained in:
parent
08b6b5ecda
commit
1d00f0ad41
@ -26,6 +26,7 @@ import (
|
|||||||
goDebug "runtime/debug"
|
goDebug "runtime/debug"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
ps "github.com/elastic/go-sysinfo"
|
ps "github.com/elastic/go-sysinfo"
|
||||||
@ -311,8 +312,12 @@ func removeWinNewLines(s string) string {
|
|||||||
|
|
||||||
func createTmpFile() (*os.File, error) {
|
func createTmpFile() (*os.File, error) {
|
||||||
var f *os.File
|
var f *os.File
|
||||||
|
noexec := tmpNoExec()
|
||||||
f, err := os.CreateTemp("", "trmm")
|
f, err := os.CreateTemp("", "trmm")
|
||||||
if err != nil {
|
if err != nil || noexec {
|
||||||
|
if noexec {
|
||||||
|
os.Remove(f.Name())
|
||||||
|
}
|
||||||
cwd, err := os.Getwd()
|
cwd, err := os.Getwd()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return f, err
|
return f, err
|
||||||
@ -356,3 +361,20 @@ func getCMDExe() string {
|
|||||||
}
|
}
|
||||||
return cmdExe
|
return cmdExe
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func tmpNoExec() bool {
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
var stat syscall.Statfs_t
|
||||||
|
var noexec bool
|
||||||
|
|
||||||
|
tmpdir := os.TempDir()
|
||||||
|
if err := syscall.Statfs(tmpdir, &stat); err == nil {
|
||||||
|
if stat.Flags&syscall.MS_NOEXEC != 0 {
|
||||||
|
noexec = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return noexec
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user