Fix npe in exec resize when exec errored

In cases where an exec start failed the exec process will be nil even
though the channel to signal that the exec started was closed.

Ideally ExecConfig would get a nice refactor to handle this case better
(ie. it's not started so don't close that channel).
This is a minimal fix to prevent NPE. Luckilly this would only get
called by a client and only the http request goroutine gets the panic
(http lib recovers the panic).

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
This commit is contained in:
Brian Goff 2023-05-27 16:04:59 +00:00
parent 8f7bbc39a4
commit 487ea81316

View file

@ -5,6 +5,8 @@ import (
"errors"
"strconv"
"time"
"github.com/docker/docker/errdefs"
)
// ContainerResize changes the size of the TTY of the process running
@ -48,6 +50,10 @@ func (daemon *Daemon) ContainerExecResize(name string, height, width int) error
select {
case <-ec.Started:
// An error may have occurred, so ec.Process may be nil.
if ec.Process == nil {
return errdefs.InvalidParameter(errors.New("exec process is not started"))
}
return ec.Process.Resize(context.Background(), uint32(width), uint32(height))
case <-timeout.C:
return errors.New("timeout waiting for exec session ready")