Skip to content

Commit 20e38fb

Browse files
committed
init: do not print environment variable value
When given an environment variable that is invalid, it's not a good idea to output the contents in case they are supposed to be private (though such a container wouldn't start anyway so it seems unlikely there's a real way to use this to exfiltrate environment variables you didn't already know). Reported-by: Carl Henrik Lunde <[email protected]> Signed-off-by: Aleksa Sarai <[email protected]>
1 parent 8af2f48 commit 20e38fb

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

libcontainer/init_linux.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,17 +116,17 @@ func populateProcessEnvironment(env []string) error {
116116
for _, pair := range env {
117117
p := strings.SplitN(pair, "=", 2)
118118
if len(p) < 2 {
119-
return fmt.Errorf("invalid environment variable: %q", pair)
119+
return errors.New("invalid environment variable: missing '='")
120120
}
121121
name, val := p[0], p[1]
122122
if name == "" {
123-
return fmt.Errorf("environment variable name can't be empty: %q", pair)
123+
return errors.New("invalid environment variable: name cannot be empty")
124124
}
125125
if strings.IndexByte(name, 0) >= 0 {
126-
return fmt.Errorf("environment variable name can't contain null(\\x00): %q", pair)
126+
return fmt.Errorf("invalid environment variable %q: name contains nul byte (\\x00)", name)
127127
}
128128
if strings.IndexByte(val, 0) >= 0 {
129-
return fmt.Errorf("environment variable value can't contain null(\\x00): %q", pair)
129+
return fmt.Errorf("invalid environment variable %q: value contains nul byte (\\x00)", name)
130130
}
131131
if err := os.Setenv(name, val); err != nil {
132132
return err

0 commit comments

Comments
 (0)