diff options
author | Ed Santiago <santiago@redhat.com> | 2019-12-25 11:51:06 -0700 |
---|---|---|
committer | Ed Santiago <santiago@redhat.com> | 2019-12-26 16:50:21 -0700 |
commit | 40f55ca3fe06d2e5d0232c1f07911ea728fd1bc1 (patch) | |
tree | 53cbd52ac0e6afe56e29b00f24ec3a8217b30533 /cmd/podman/shared/create.go | |
parent | c759c3f78dcbbf5dec462a863ad25cd41a1707b7 (diff) | |
download | podman-40f55ca3fe06d2e5d0232c1f07911ea728fd1bc1.tar.gz podman-40f55ca3fe06d2e5d0232c1f07911ea728fd1bc1.tar.bz2 podman-40f55ca3fe06d2e5d0232c1f07911ea728fd1bc1.zip |
signal parsing - better input validation
The helper function we use for signal name mapping does not
check for negative numbers nor invalid (too-high) ones. This
can yield unexpected error messages:
# podman kill -s -1 foo
ERRO[0000] unknown signal "18446744073709551615"
This PR introduces a small wrapper for it that:
1) Strips off a leading dash, allowing '-1' or '-HUP'
as valid inputs; and
2) Rejects numbers <1 or >64 (SIGRTMAX)
Also adds a test suite checking signal handling as well as
ensuring that invalid signals are rejected by the command line.
Fixes: #4746
Signed-off-by: Ed Santiago <santiago@redhat.com>
Diffstat (limited to 'cmd/podman/shared/create.go')
-rw-r--r-- | cmd/podman/shared/create.go | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/cmd/podman/shared/create.go b/cmd/podman/shared/create.go index c1c5db7cb..58cf56eea 100644 --- a/cmd/podman/shared/create.go +++ b/cmd/podman/shared/create.go @@ -24,7 +24,6 @@ import ( "github.com/containers/libpod/pkg/rootless" cc "github.com/containers/libpod/pkg/spec" "github.com/containers/libpod/pkg/util" - "github.com/docker/docker/pkg/signal" "github.com/docker/go-connections/nat" "github.com/docker/go-units" "github.com/opentracing/opentracing-go" @@ -464,7 +463,7 @@ func ParseCreateOpts(ctx context.Context, c *GenericCLIResults, runtime *libpod. signalString = c.String("stop-signal") } if signalString != "" { - stopSignal, err = signal.ParseSignal(signalString) + stopSignal, err = util.ParseSignal(signalString) if err != nil { return nil, err } @@ -624,7 +623,7 @@ func ParseCreateOpts(ctx context.Context, c *GenericCLIResults, runtime *libpod. } if systemd { if signalString == "" { - stopSignal, err = signal.ParseSignal("RTMIN+3") + stopSignal, err = util.ParseSignal("RTMIN+3") if err != nil { return nil, errors.Wrapf(err, "error parsing systemd signal") } |