Commit 0ae4f887 ("lxc: introduce lxc_execute()" - Greg Kurz) introduced
a regression with the use of lxc-execute for containers with large
argument lists.  In lxc-0.7.5, the following command produced 100000
lines of output:

        lxc-execute -n test -- /usr/bin/printf '%s\n' {1..100000}

In lxc-0.8.0-rc2, the same command produces no output.  Running strace
reveals that a child of lxc-execute receives a segmentation fault before
it starts lxc-init.  The crash occurs because the new function allocates
too few elements for the argv of the child, so a long argument list
causes it to trash the heap.  Given a large enough argument list, it
will run off the end of the heap and access an unmapped page, causing a
segmentation fault.

I have a patch for this posted in my master branch on GitHub:

        https://github.com/kevin-dot-pyle/lxc


The following changes since commit ed55bf5203aca88809d979b289d6b2280a18e79c:

   lxc-0.8.0-rc2 (2012-03-20 23:27:47 +0100)

are available in the git repository at:
   git://github.com/kevin-dot-pyle/lxc.git master

Kevin Pyle (4):
       conf: make struct config const
       network: make lxc_ipv{4,6}_addr_add const correct
       log: make locinfo static const
       execute: fix argument counting regression from 0ae4f887

  src/lxc/confile.c |    8 ++++----
  src/lxc/execute.c |    5 ++++-
  src/lxc/log.h     |   24 ++++++++++++------------
  src/lxc/network.c |   12 ++++++------
  src/lxc/network.h |   10 +++++-----
  5 files changed, 31 insertions(+), 28 deletions(-)


------------------------------------------------------------------------------
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to