use slices.Clone instead of assignment

Fixes #24267

This commit replaces a potentially unsafe slice-assignment with a call to `slices.Clone`.

This could prevent a bug where `saveCommand` and `loadCommand` could end up sharing an underlying array if `parentFlags` has a cap > it's len.

Signed-off-by: Zachary Hanham <z.hanham00@gmail.com>
This commit is contained in:
Zachary Hanham
2024-10-15 14:14:38 -04:00
parent f668fd9f8d
commit b7b2ef48e8

View File

@ -13,6 +13,7 @@ import (
"os/user"
"path"
"path/filepath"
"slices"
"strconv"
"strings"
"syscall"
@ -803,7 +804,8 @@ func Transfer(ctx context.Context, source entities.ImageScpOptions, dest entitie
// TransferRootless creates new podman processes using exec.Command and sudo, transferring images between the given source and destination users
func transferRootless(source entities.ImageScpOptions, dest entities.ImageScpOptions, podman string, parentFlags []string) error {
var cmdSave *exec.Cmd
saveCommand, loadCommand := parentFlags, parentFlags
saveCommand := slices.Clone(parentFlags)
loadCommand := slices.Clone(parentFlags)
saveCommand = append(saveCommand, []string{"save"}...)
loadCommand = append(loadCommand, []string{"load"}...)
if source.Quiet {