Set a default PATH if PATH is empty or unset

mount(1) unsets PATH before calling mount.fuse. Therefore it's not set
in gocrpytfs either and daemonization fails if gocryptfs was not
executed via an absolute path.

mount.fuse handles this by leaving the execution of the helper to
/bin/sh. /bin/sh handles an empty PATH by searching a few default
locations.

This patch sets the PATH to a sane default if it's empty or unset.
This commit is contained in:
Julian Orth 2018-05-06 18:08:30 +02:00 committed by Jakob Unterwurzacher
parent 53d6a9999d
commit 10212d791a
1 changed files with 5 additions and 0 deletions

View File

@ -126,6 +126,11 @@ func main() {
// On a 2-core machine, setting maxprocs to 4 gives 10% better performance // On a 2-core machine, setting maxprocs to 4 gives 10% better performance
runtime.GOMAXPROCS(4) runtime.GOMAXPROCS(4)
} }
// mount(1) unsets PATH. Since exec.Command does not handle this case, we set
// PATH to a default value if it's empty or unset.
if os.Getenv("PATH") == "" {
os.Setenv("PATH", "/usr/sbin:/usr/bin:/sbin:/bin")
}
var err error var err error
// Parse all command-line options (i.e. arguments starting with "-") // Parse all command-line options (i.e. arguments starting with "-")
// into "args". Path arguments are parsed below. // into "args". Path arguments are parsed below.