# HG changeset patch # User Olaf Hering <olaf@aepfle.de> # Date 1353530937 -3600 # Node ID a446956472330fe32bc69be764a33f59fb090792 # Parent 2489c29266982175b5b4e945c97b4549360e947f xend: enable environment passing in xPopen3 In changeset 19990:38dd208e1d95 a new parameter ''env'' was added to xPopen3, but no code was added to actually pass the environment down to execvpe. Also, the new code was unreachable. Signed-off-by: Olaf Hering <olaf@aepfle.de> diff -r 2489c2926698 -r a44695647233 tools/python/xen/util/xpopen.py --- a/tools/python/xen/util/xpopen.py +++ b/tools/python/xen/util/xpopen.py @@ -104,7 +104,7 @@ class xPopen3: os.dup2(c2pwrite, 1) if capturestderr: os.dup2(errin, 2) - self._run_child(cmd) + self._run_child(cmd, env) os.close(p2cread) self.tochild = os.fdopen(p2cwrite, ''w'', bufsize) os.close(c2pwrite) @@ -116,7 +116,7 @@ class xPopen3: self.childerr = None _active.append(self) - def _run_child(self, cmd): + def _run_child(self, cmd, env): if isinstance(cmd, basestring): cmd = [''/bin/sh'', ''-c'', cmd] for i in range(3, MAXFD): @@ -127,7 +127,6 @@ class xPopen3: except OSError: pass try: - os.execvp(cmd[0], cmd) if env is None: os.execvp(cmd[0], cmd) else:
Ian Campbell
2012-Nov-23 10:10 UTC
Re: [PATCH] xend: enable environment passing in xPopen3
On Wed, 2012-11-21 at 20:49 +0000, Olaf Hering wrote:> # HG changeset patch > # User Olaf Hering <olaf@aepfle.de> > # Date 1353530937 -3600 > # Node ID a446956472330fe32bc69be764a33f59fb090792 > # Parent 2489c29266982175b5b4e945c97b4549360e947f > xend: enable environment passing in xPopen3 > > In changeset 19990:38dd208e1d95 a new parameter ''env'' was added to > xPopen3, but no code was added to actually pass the environment down to > execvpe. Also, the new code was unreachable. > > Signed-off-by: Olaf Hering <olaf@aepfle.de>It seems that no callers provide an environment? How did you spot this?> diff -r 2489c2926698 -r a44695647233 tools/python/xen/util/xpopen.py > --- a/tools/python/xen/util/xpopen.py > +++ b/tools/python/xen/util/xpopen.py > @@ -104,7 +104,7 @@ class xPopen3: > os.dup2(c2pwrite, 1) > if capturestderr: > os.dup2(errin, 2) > - self._run_child(cmd) > + self._run_child(cmd, env) > os.close(p2cread) > self.tochild = os.fdopen(p2cwrite, ''w'', bufsize) > os.close(c2pwrite) > @@ -116,7 +116,7 @@ class xPopen3: > self.childerr = None > _active.append(self) > > - def _run_child(self, cmd): > + def _run_child(self, cmd, env): > if isinstance(cmd, basestring): > cmd = [''/bin/sh'', ''-c'', cmd] > for i in range(3, MAXFD): > @@ -127,7 +127,6 @@ class xPopen3: > except OSError: > pass > try: > - os.execvp(cmd[0], cmd) > if env is None: > os.execvp(cmd[0], cmd) > else: > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel
On Fri, Nov 23, Ian Campbell wrote:> On Wed, 2012-11-21 at 20:49 +0000, Olaf Hering wrote: > > # HG changeset patch > > # User Olaf Hering <olaf@aepfle.de> > > # Date 1353530937 -3600 > > # Node ID a446956472330fe32bc69be764a33f59fb090792 > > # Parent 2489c29266982175b5b4e945c97b4549360e947f > > xend: enable environment passing in xPopen3 > > > > In changeset 19990:38dd208e1d95 a new parameter ''env'' was added to > > xPopen3, but no code was added to actually pass the environment down to > > execvpe. Also, the new code was unreachable. > > > > Signed-off-by: Olaf Hering <olaf@aepfle.de> > > It seems that no callers provide an environment? How did you spot this?In my testing I did pass options to xc_save via the environment, which is called via forkhelper (somewhere in python code). Olaf
Ian Campbell
2012-Nov-23 11:09 UTC
Re: [PATCH] xend: enable environment passing in xPopen3
On Fri, 2012-11-23 at 10:52 +0000, Olaf Hering wrote:> On Fri, Nov 23, Ian Campbell wrote: > > > On Wed, 2012-11-21 at 20:49 +0000, Olaf Hering wrote: > > > # HG changeset patch > > > # User Olaf Hering <olaf@aepfle.de> > > > # Date 1353530937 -3600 > > > # Node ID a446956472330fe32bc69be764a33f59fb090792 > > > # Parent 2489c29266982175b5b4e945c97b4549360e947f > > > xend: enable environment passing in xPopen3 > > > > > > In changeset 19990:38dd208e1d95 a new parameter ''env'' was added to > > > xPopen3, but no code was added to actually pass the environment down to > > > execvpe. Also, the new code was unreachable. > > > > > > Signed-off-by: Olaf Hering <olaf@aepfle.de> > > > > It seems that no callers provide an environment? How did you spot this? > > In my testing I did pass options to xc_save via the environment, which > is called via forkhelper (somewhere in python code).Thanks. Acked + applied.