1. 22 Sep, 2014 4 commits
    • Fix build error(ISO C90 specs violation) in lxc.c · dc18b2c9
      Masami Ichikawa authored
      This patch fixes following build errors.
      
      running build_ext
      building '_lxc' extension
      creating build/temp.linux-x86_64-3.4
      gcc -pthread -Wno-unused-result -Werror=declaration-after-statement -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong --param=ssp-buffer-size=4 -fPIC -I../../src -I../../src -I/usr/include/python3.4m -c lxc.c -o ./build/temp.linux-x86_64-3.4/lxc.o
      lxc.c: In function ‘convert_tuple_to_char_pointer_array’:
      lxc.c:49:5: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
           char **result = (char**) calloc(argc + 1, sizeof(char*));
           ^
      lxc.c:60:9: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
               char *str = NULL;
               ^
      lxc.c: In function ‘Container_get_cgroup_item’:
      lxc.c:822:5: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
           char* value = (char*) malloc(sizeof(char)*len + 1);
           ^
      lxc.c: In function ‘Container_get_config_item’:
      lxc.c:861:5: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
           char* value = (char*) malloc(sizeof(char)*len + 1);
           ^
      lxc.c: In function ‘Container_get_keys’:
      lxc.c:903:5: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
           char* value = (char*) malloc(sizeof(char)*len + 1);
           ^
      cc1: some warnings being treated as errors
      error: command 'gcc' failed with exit status 1
      Makefile:472: recipe for target 'all' failed
      make[3]: *** [all] Error 1
      make[3]: Leaving directory '/home/masami/codes/lxc/src/python-lxc'
      Makefile:394: recipe for target 'all-recursive' failed
      make[2]: *** [all-recursive] Error 1
      make[2]: Leaving directory '/home/masami/codes/lxc/src'
      Makefile:338: recipe for target 'all' failed
      make[1]: *** [all] Error 2
      make[1]: Leaving directory '/home/masami/codes/lxc/src'
      Makefile:484: recipe for target 'all-recursive' failed
      make: *** [all-recursive] Error 1
      
      build env:
      distribution: Arch Linux
      gcc version 4.9.1 20140903 (prerelease) (GCC)
      Signed-off-by: 's avatarMasami Ichikawa <masami256@gmail.com>
      Acked-by: 's avatarStéphane Graber <stgraber@ubuntu.com>
    • apparmor: make sure sysfs and securityfs are mounted when checking for mount feature · 85108024
      Serge Hallyn authored
      Otherwise the check will return false if securityfs was not mounted
      by the container's configuration.  In the past we let that quietly
      proceed, but unconfined.  Now that we restrict such container
      starts, this caused lxc-test-apparmor to fail.
      Signed-off-by: 's avatarSerge Hallyn <serge.hallyn@ubuntu.com>
      Acked-by: 's avatarDwight Engen <dwight.engen@oracle.com>
    • apparmor: improve behavior when kernel lacks mount restrictions (v2) · 7aff4f43
      Serge Hallyn authored
      (Dwight, I took the liberty of adding your Ack but the code did
      change a bit to continue passing the char *label from attach.
      Tested that "lxc-start -n u1 -s lxc.aa_profile=p2; lxc-attach -n u1"
      does attach you to the p2 profile)
      
      Apparmor policies require mount restrictions to fullfill many of
      their promises - for instance if proc can be mounted anywhere,
      then 'deny /proc/sysrq-trigger w' prevents only accidents, not
      malice.
      
      The mount restrictions are not available in the upstream kernel.
      We can detect their presence through /sys.  In the past, when
      we detected it missing, we would not enable apparmor.  But that
      prevents apparmor from helping to prevent accidents.
      
      At the same time, if the user accidentaly boots a kernel which
      has regressed, we do not want them starting the container thinking
      they are more protected than they are.
      
      This patch:
      
      1. adds a lxc.aa_allow_incomplete = 1 container config flag.  If
      not set, then any container which is not set to run unconfined
      will refuse to run.   If set, then the container will run with
      apparmor protection.
      
      2. to pass this flag to the apparmor driver, we pass the container
      configuration (lxc_conf) to the lsm_label_set hook.
      
      3. add a testcase.  To test the case were a kernel does not
      provide mount restrictions, we mount an empty directory over
      the /sys/kernel/security/apparmor/features/mount directory.  In
      order to have that not be unmounted in a new namespace, we must
      test using unprivileged containers (who cannot remove bind mounts
      which hide existing mount contents).
      Signed-off-by: 's avatarSerge Hallyn <serge.hallyn@ubuntu.com>
      Acked-by: 's avatarDwight Engen <dwight.engen@oracle.com>
      Acked-by: 's avatarStéphane Graber <stgraber@ubuntu.com>
    • pivot_root: switch to a new mechanism (v2) · 2d489f9e
      Serge Hallyn authored
      This idea came from Andy Lutomirski.  Instead of using a
      temporary directory for the pivot_root put-old, use "." both
      for new-root and old-root.  Then fchdir into the old root
      temporarily in order to unmount the old-root, and finally
      chdir back into our '/'.
      
      Drop lxc.pivotdir from the lxc.container.conf manpage.
      
      Warn when we see a lxc.pivotdir entry (but keep it in the
      lxc.conf for now).
      Signed-off-by: 's avatarSerge Hallyn <serge.hallyn@ubuntu.com>
      Acked-by: 's avatarStéphane Graber <stgraber@ubuntu.com>
  2. 19 Sep, 2014 14 commits
  3. 04 Sep, 2014 1 commit
    • Report container exit status to monitord · 1787abca
      Jean-Tiare LE BIGOT authored
      When managing containers, I need to take action based on container
      exit status. For instance, if it exited abnormally (status!=0), I
      sometime want to respawn it automatically. Or, when invoking
      `lxc-stop` I want to know if it terminated gracefully (ie on `SIGTERM`)
      or on `SIGKILL` after a timeout.
      
      This patch adds a new message type `lxc_msg_exit_code,` to preserve
      ABI. It sends the raw status code as returned by `waitpid` so that
      listening application may want to apply `WEXITSTATUS` before. This is
      what `lxc-monitor` does.
      Signed-off-by: 's avatarJean-Tiare LE BIGOT <jean-tiare.le-bigot@ovh.net>
  4. 29 Aug, 2014 1 commit
    • lxc-cgm: fix issue with nested chowning · d6559c5d
      Serge Hallyn authored
      To ask cgmanager to chown files as an unpriv user, we must send the
      request from the container's namespace (with our own userid also
      mapped in).  However when we create a new namespace then we must
      open a new dbus connection, so that our credential and the credential
      on the dbus socket match.  Otherwise the proxy will refuse the request.
      
      Because we were warning about this failure but not exiting, the failure
      was not noticed until the unprivileged container went on to try to
      administer its cgroups, i.e. creating a container inside itself.
      
      Fix this by having the do_chown_cgroup create a new cgmanager connection.
      In order to reduce the number of connections, since the list of subsystems
      is global anyway, don't call do_chown_cgroup once for each controller,
      just call it once and have it run over all controllers.
      
      (This patch does not change the fact that we don't fail if the
      chown failed.  I think we should change that, but let's do it in a
      later patch)
      Reported-by: 's avatarStéphane Graber <stgraber@ubuntu.com>
      Signed-off-by: 's avatarSerge Hallyn <serge.hallyn@ubuntu.com>
      Acked-by: 's avatarStéphane Graber <stgraber@ubuntu.com>
  5. 27 Aug, 2014 1 commit
  6. 26 Aug, 2014 4 commits
  7. 25 Aug, 2014 7 commits
  8. 22 Aug, 2014 8 commits