Don't call open("") (#1336)
strings.Split(s, sep) returns a slice of a single element containing s if sep is not found in s. This is true even if s is empty. As a result, every call to flagFromEnvOrFile results in an attempt to open a file with empty name. This is seen from strace as [pid 3287620] openat(AT_FDCWD, "", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) [pid 3287620] openat(AT_FDCWD, "", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) ... To fix, check if the string is empty before calling ReadFile. This also fixes cases where filePath is non-empty but has extra commas. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
This commit is contained in:
parent
1bf639b391
commit
3df9a3cd86
6
flag.go
6
flag.go
@ -434,8 +434,10 @@ func flagFromEnvOrFile(envVars []string, filePath string) (val string, ok bool)
|
||||
}
|
||||
}
|
||||
for _, fileVar := range strings.Split(filePath, ",") {
|
||||
if data, err := ioutil.ReadFile(fileVar); err == nil {
|
||||
return string(data), true
|
||||
if fileVar != "" {
|
||||
if data, err := ioutil.ReadFile(fileVar); err == nil {
|
||||
return string(data), true
|
||||
}
|
||||
}
|
||||
}
|
||||
return "", false
|
||||
|
Loading…
Reference in New Issue
Block a user