mirror of
https://github.com/golang/go
synced 2024-11-24 22:57:57 -07:00
syscall: work around FreeBSD execve kernel bug
FreeBSD's execve implementation has an integer underflow in a bounds test which causes it to erroneously think the argument list is too long when argv[0] is longer than interpreter + path. R=rsc, bradfitz, rsc1 CC=golang-dev https://golang.org/cl/4259056
This commit is contained in:
parent
9e25eccf48
commit
eeb8d00c86
@ -238,6 +238,10 @@ func forkExec(argv0 string, argv []string, envv []string, traceme bool, dir stri
|
||||
dirp = StringBytePtr(dir)
|
||||
}
|
||||
|
||||
if OS == "freebsd" && len(argv[0]) > len(argv0) {
|
||||
argvp[0] = argv0p
|
||||
}
|
||||
|
||||
// Acquire the fork lock so that no other threads
|
||||
// create new fds that are not yet close-on-exec
|
||||
// before we fork.
|
||||
|
Loading…
Reference in New Issue
Block a user