diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2019-03-08 11:00:52 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-08 11:00:52 -0800 |
commit | bf8c2096d8bba5d94a6e6201ba483f2aa72f1d01 (patch) | |
tree | 4789ab531f7259212be9337a4f516d6072c870fd | |
parent | 5ae7359184a20859d775bc59f1b1c53348b04ecd (diff) | |
parent | cc411dd98fed42a19d2d4f8ec1922ba62da49957 (diff) | |
download | podman-bf8c2096d8bba5d94a6e6201ba483f2aa72f1d01.tar.gz podman-bf8c2096d8bba5d94a6e6201ba483f2aa72f1d01.tar.bz2 podman-bf8c2096d8bba5d94a6e6201ba483f2aa72f1d01.zip |
Merge pull request #2588 from giuseppe/rootless-propagate-error-from-info
rootless: propagate errors from info
-rw-r--r-- | libpod/runtime.go | 9 | ||||
-rw-r--r-- | pkg/rootless/rootless_linux.c | 2 | ||||
-rw-r--r-- | pkg/rootless/rootless_linux.go | 1 |
3 files changed, 9 insertions, 3 deletions
diff --git a/libpod/runtime.go b/libpod/runtime.go index 482cd9d73..9667abfe6 100644 --- a/libpod/runtime.go +++ b/libpod/runtime.go @@ -971,9 +971,12 @@ func (r *Runtime) refreshRootless() error { // Take advantage of a command that requires a new userns // so that we are running as the root user and able to use refresh() cmd := exec.Command(os.Args[0], "info") - err := cmd.Run() - if err != nil { - return errors.Wrapf(err, "Error running %s info while refreshing state", os.Args[0]) + + if output, err := cmd.CombinedOutput(); err != nil { + if _, ok := err.(*exec.ExitError); !ok { + return errors.Wrapf(err, "Error waiting for info while refreshing state: %s", os.Args[0]) + } + return errors.Wrapf(err, "Error running %s info while refreshing state: %s", os.Args[0], output) } return nil } diff --git a/pkg/rootless/rootless_linux.c b/pkg/rootless/rootless_linux.c index 41acd3475..ff39e9e77 100644 --- a/pkg/rootless/rootless_linux.c +++ b/pkg/rootless/rootless_linux.c @@ -277,6 +277,8 @@ reexec_in_user_namespace (int ready) _exit (EXIT_FAILURE); } close (ready); + if (b != '1') + _exit (EXIT_FAILURE); if (syscall_setresgid (0, 0, 0) < 0) { diff --git a/pkg/rootless/rootless_linux.go b/pkg/rootless/rootless_linux.go index 55fba900e..933cfa2c2 100644 --- a/pkg/rootless/rootless_linux.go +++ b/pkg/rootless/rootless_linux.go @@ -229,6 +229,7 @@ func BecomeRootInUserNS() (bool, int, error) { } defer r.Close() defer w.Close() + defer w.Write([]byte("0")) pidC := C.reexec_in_user_namespace(C.int(r.Fd())) pid := int(pidC) |