Skip to content

Commit

Permalink
remote: fix invalid --cidfile + --ignore
Browse files Browse the repository at this point in the history
When the cidfile does not exists and ignore is set the cli parser skips
the file without error and we call into the backend code without any
names at all. This should logically be a NOP but on remote it caused all
containers to be returned which caused podman stop to stop everything in
this case.

Fixes #23554

Signed-off-by: Paul Holzinger <[email protected]>
  • Loading branch information
Luap99 committed Aug 12, 2024
1 parent 708d6c5 commit 6fce734
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
7 changes: 7 additions & 0 deletions pkg/domain/infra/tunnel/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,13 @@ func getContainersAndInputByContext(contextWithConnection context.Context, all,
if all && len(namesOrIDs) > 0 {
return nil, nil, errors.New("cannot look up containers and all")
}
// short cut if not all, not filters and no names are given. This can happen with
// --ignore and --cidfile, https://github.com/containers/podman/issues/23554.
// In this case we have to do nothting and not even have to do a request
if !all && len(filters) == 0 && len(namesOrIDs) == 0 {
return nil, nil, nil
}

options := new(containers.ListOptions).WithAll(true).WithSync(true).WithFilters(filters)
allContainers, err := containers.List(contextWithConnection, options)
if err != nil {
Expand Down
9 changes: 8 additions & 1 deletion test/system/050-stop.bats
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,15 @@ load helpers
run_podman 125 stop --cidfile=$nosuchfile
is "$output" "Error: reading CIDFile: open $nosuchfile: no such file or directory" "podman stop with missing cidfile, without --ignore"

# create a container to reproduce (#23554)
run_podman run -d $IMAGE sleep inf
cid="$output"

# Important for (#23554) that there is no output here
run_podman stop --cidfile=$nosuchfile --ignore
is "$output" "" "podman stop with missing cidfile, with --ignore"
is "$output" "" "podman stop with missing cidfile, with --ignore (empty output)"

run_podman rm -f -t0 $cid
}


Expand Down

0 comments on commit 6fce734

Please sign in to comment.