the "golang.org/x/sys/execabs" package was introduced to address a security issue on Windows, and changing the default behavior of os/exec was considered a breaking change. go1.19 applied the behavior that was previously implemented in the execabs package; from the release notes: https://go.dev/doc/go1.19#os-exec-path > Command and LookPath no longer allow results from a PATH search to be found > relative to the current directory. This removes a common source of security > problems but may also break existing programs that depend on using, say, > exec.Command("prog") to run a binary named prog (or, on Windows, prog.exe) > in the current directory. See the os/exec package documentation for information > about how best to update such programs. > > On Windows, Command and LookPath now respect the NoDefaultCurrentDirectoryInExePath > environment variable, making it possible to disable the default implicit search > of “.” in PATH lookups on Windows systems. With those changes, we no longer need to use the execabs package, and we can switch back to os/exec. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
23 lines
515 B
Go
23 lines
515 B
Go
package credentials
|
|
|
|
import "os/exec"
|
|
|
|
// DetectDefaultStore return the default credentials store for the platform if
|
|
// no user-defined store is passed, and the store executable is available.
|
|
func DetectDefaultStore(store string) string {
|
|
if store != "" {
|
|
// use user-defined
|
|
return store
|
|
}
|
|
|
|
platformDefault := defaultCredentialsStore()
|
|
if platformDefault == "" {
|
|
return ""
|
|
}
|
|
|
|
if _, err := exec.LookPath(remoteCredentialsPrefix + platformDefault); err != nil {
|
|
return ""
|
|
}
|
|
return platformDefault
|
|
}
|