Skip to content

Commit

Permalink
Merge pull request moby#33815 from jstarks/lcow_command_args
Browse files Browse the repository at this point in the history
LCOW: pass command arguments without extra quoting
  • Loading branch information
johnstep authored Jun 27, 2017
2 parents 8f3c526 + 1964552 commit bcc8b2b
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 5 deletions.
6 changes: 4 additions & 2 deletions daemon/exec_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ import (

func execSetPlatformOpt(c *container.Container, ec *exec.Config, p *libcontainerd.Process) error {
// Process arguments need to be escaped before sending to OCI.
p.Args = escapeArgs(p.Args)
p.User.Username = ec.User
if c.Platform == "windows" {
p.Args = escapeArgs(p.Args)
p.User.Username = ec.User
}
return nil
}
2 changes: 1 addition & 1 deletion daemon/oci_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ func (daemon *Daemon) createSpec(c *container.Container) (*specs.Spec, error) {

// In s.Process
s.Process.Args = append([]string{c.Path}, c.Args...)
if !c.Config.ArgsEscaped {
if !c.Config.ArgsEscaped && img.OS == "windows" {
s.Process.Args = escapeArgs(s.Process.Args)
}

Expand Down
6 changes: 5 additions & 1 deletion libcontainerd/client_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -420,7 +420,11 @@ func (clnt *client) AddProcess(ctx context.Context, containerID, processFriendly

// Configure the environment for the process
createProcessParms.Environment = setupEnvironmentVariables(procToAdd.Env)
createProcessParms.CommandLine = strings.Join(procToAdd.Args, " ")
if container.ociSpec.Platform.OS == "windows" {
createProcessParms.CommandLine = strings.Join(procToAdd.Args, " ")
} else {
createProcessParms.CommandArgs = procToAdd.Args
}
createProcessParms.User = procToAdd.User.Username

logrus.Debugf("libcontainerd: commandLine: %s", createProcessParms.CommandLine)
Expand Down
6 changes: 5 additions & 1 deletion libcontainerd/container_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,11 @@ func (ctr *container) start(attachStdio StdioCallback) error {

// Configure the environment for the process
createProcessParms.Environment = setupEnvironmentVariables(ctr.ociSpec.Process.Env)
createProcessParms.CommandLine = strings.Join(ctr.ociSpec.Process.Args, " ")
if ctr.ociSpec.Platform.OS == "windows" {
createProcessParms.CommandLine = strings.Join(ctr.ociSpec.Process.Args, " ")
} else {
createProcessParms.CommandArgs = ctr.ociSpec.Process.Args
}
createProcessParms.User = ctr.ociSpec.Process.User.Username

// LCOW requires the raw OCI spec passed through HCS and onwards to GCS for the utility VM.
Expand Down

0 comments on commit bcc8b2b

Please sign in to comment.