1. 17 Dec, 2017 23 commits
  2. 20 Nov, 2017 3 commits
    • commands: fix state socket implementation · 06485e37
      Christian Brauner authored
      Remove dead state clients from state client list. Consider the following
      scenario:
      
      01 start container
      02 issue shutdown request
      03 state_client_fd is added to lxc_handler
      03 container doesn't respond to shutdown request
      04 user aborts shutdown request
      05 lxc_cmd_fd_cleanup() removes state_client_fd from lxc_mainloop
      06 invalid state_client_fd is still recorded in the lxc_handler
      07 user issues lxc_cmd_stop() request via SIGKILL
      08 container reaches STOPPED state and sends message to state_client_fd
      09 state_client_fd number has been reused by lxc_cmd_stop_callback()
      10 invalid data gets dumped to lxc_cmd_stop()
      
      Reproducer:
      Set an invalid shutdown signal to which the init system does not respond with a
      shutdown via lxc.signal.halt e.g. "lxc.signal.halt = SIGUSR1". Then do:
      
      1. start container
          root@conventiont|~
          > lxc-start -n a1
      
      2. try to shutdown container
          root@conventiont|~
          > lxc-stop -n a1
      
      3. abort shutdown
      ^C
      
      4. SIGKILL the container (lxc.signal.stop = SIGKILL)
          root@conventiont|~
          > lxc-stop -n a1 -k
          lxc-stop: a1: commands.c: lxc_cmd_rsp_recv: 165 File too large - Response data for command "stop" is too long: 12641 bytes > 8192
      
      To not let this happen we remove the state_client_fd from the lxc_handler when
      we detect a cleanup event in lxc_cmd_fd_cleanup().
      Signed-off-by: 's avatarChristian Brauner <christian.brauner@ubuntu.com>
  3. 13 Nov, 2017 2 commits
  4. 12 Nov, 2017 1 commit
  5. 11 Nov, 2017 3 commits
  6. 10 Nov, 2017 5 commits
  7. 09 Nov, 2017 3 commits