aboutsummaryrefslogtreecommitdiff
path: root/libpod
diff options
context:
space:
mode:
authorPaul Holzinger <pholzing@redhat.com>2021-11-24 13:40:26 +0100
committerPaul Holzinger <pholzing@redhat.com>2021-11-24 15:02:11 +0100
commitbc3c5be2fb0fe652db53b931e1ae4a42da6fa014 (patch)
treeedd4e423dede5c6c2ac6f7722beb60fbef92f59c /libpod
parent93138541f3119b81c170e5ce904a8c4e6cece842 (diff)
downloadpodman-bc3c5be2fb0fe652db53b931e1ae4a42da6fa014.tar.gz
podman-bc3c5be2fb0fe652db53b931e1ae4a42da6fa014.tar.bz2
podman-bc3c5be2fb0fe652db53b931e1ae4a42da6fa014.zip
checkpoint do not modify XDG_RUNTIME_DIR
We should not modify the XDG_RUNTIME_DIR env value during runtime of libpod, this can cause hard to find bugs. Only set it for the OCI runtime, this matches the other commands such as start, stop, kill... [NO NEW TESTS NEEDED] Signed-off-by: Paul Holzinger <pholzing@redhat.com>
Diffstat (limited to 'libpod')
-rw-r--r--libpod/oci_conmon_linux.go27
1 files changed, 9 insertions, 18 deletions
diff --git a/libpod/oci_conmon_linux.go b/libpod/oci_conmon_linux.go
index 8534c9fdb..a83f166a3 100644
--- a/libpod/oci_conmon_linux.go
+++ b/libpod/oci_conmon_linux.go
@@ -816,35 +816,26 @@ func (r *ConmonOCIRuntime) CheckpointContainer(ctr *Container, options Container
filepath.Join("..", preCheckpointDir),
)
}
+
+ args = append(args, ctr.ID())
+ logrus.Debugf("the args to checkpoint: %s %s", r.path, strings.Join(args, " "))
+
runtimeDir, err := util.GetRuntimeDir()
if err != nil {
return 0, err
}
- args = append(args, ctr.ID())
- logrus.Debugf("the args to checkpoint: %s %s", r.path, strings.Join(args, " "))
-
- oldRuntimeDir, oldRuntimeDirSet := os.LookupEnv("XDG_RUNTIME_DIR")
- if err = os.Setenv("XDG_RUNTIME_DIR", runtimeDir); err != nil {
- return 0, errors.Wrapf(err, "cannot set XDG_RUNTIME_DIR")
+ env := []string{fmt.Sprintf("XDG_RUNTIME_DIR=%s", runtimeDir)}
+ if path, ok := os.LookupEnv("PATH"); ok {
+ env = append(env, fmt.Sprintf("PATH=%s", path))
}
+
runtime.LockOSThread()
if err := label.SetSocketLabel(ctr.ProcessLabel()); err != nil {
return 0, err
}
- defer func() {
- if oldRuntimeDirSet {
- if err := os.Setenv("XDG_RUNTIME_DIR", oldRuntimeDir); err != nil {
- logrus.Warnf("cannot resset XDG_RUNTIME_DIR: %v", err)
- }
- } else {
- if err := os.Unsetenv("XDG_RUNTIME_DIR"); err != nil {
- logrus.Warnf("cannot unset XDG_RUNTIME_DIR: %v", err)
- }
- }
- }()
runtimeCheckpointStarted := time.Now()
- err = utils.ExecCmdWithStdStreams(os.Stdin, os.Stdout, os.Stderr, nil, r.path, args...)
+ err = utils.ExecCmdWithStdStreams(os.Stdin, os.Stdout, os.Stderr, env, r.path, args...)
// Ignore error returned from SetSocketLabel("") call,
// can't recover.
if labelErr := label.SetSocketLabel(""); labelErr == nil {