]> git.ipfire.org Git - thirdparty/lxc.git/log
thirdparty/lxc.git
6 years agoapparmor: catch config file opening error 2847/head
Hervé Beraud [Tue, 12 Feb 2019 21:48:51 +0000 (22:48 +0100)] 
apparmor: catch config file opening error

Improve config file error opening management
and improve main code block.

Execute this python script during CI to avoid
regressions

Signed-off-by: Hervé Beraud <hberaud@redhat.com>
6 years agoMerge pull request #2846 from brauner/2019-02-12/CVE-2019-5736
Stéphane Graber [Tue, 12 Feb 2019 17:14:19 +0000 (12:14 -0500)] 
Merge pull request #2846 from brauner/2019-02-12/CVE-2019-5736

rexec: make rexecution opt-in for library callers

6 years agorexec: make rexecution opt-in for library callers 2846/head
Christian Brauner [Tue, 12 Feb 2019 16:31:14 +0000 (17:31 +0100)] 
rexec: make rexecution opt-in for library callers

We cannot rexecute the liblxc shared library unconditionally as this would
break most of our downstreams. Here are some scenarios:
- anyone performing a dlopen() on the shared library (e.g. users of the LXC
  Python bindings)
- LXD as it needs to know the absolute path to its own executable based on
  /proc/self/exe etc.

This commit makes the rexecution of liblxc conditional on whether the
LXC_MEMFD_REXEC environment variable is set or not. If it is then liblxc is
unconditionally rexecuted.

The only relevant attack vector exists for lxc-attach which we simply reexecute
unconditionally.

Reported-by: Stéphane Graber <stgraber@ubuntu.com>
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoMerge pull request #2844 from brauner/2019-02-11/licensing+
Stéphane Graber [Mon, 11 Feb 2019 22:31:14 +0000 (17:31 -0500)] 
Merge pull request #2844 from brauner/2019-02-11/licensing+

string_utils.h: fix wrong licensing

6 years agostring_utils.h: fix wrong licensing 2844/head
Christian Brauner [Mon, 11 Feb 2019 21:13:34 +0000 (22:13 +0100)] 
string_utils.h: fix wrong licensing

liblxc has always been meant to be LGPLv2.1+ as reflected by the many
downstreams projects and bindings which are themselves under LGPLv2.1+ or other
licenses which would be incompatible with linking against a GPLv2+ library.

It's pretty normal for a library to be LGPL while binaries are GPL as a GPL
library would only ever be usable by other GPL-only projects, which isn't the
case for very many of the liblxc downstreams.

The issue here is really carelessness. None of those GPL headers were put there
intentionally, instead being wrongly copy/pasted from other parts of the
codebase which is indeed intended to be GPLv2+. This is also made clear in our
CONTRIBUTING file in this repository:

Licensing for new files:
------------------------

LXC is made of files shipped under a few different licenses.

Anything that ends up being part of the LXC library needs to be released
under LGPLv2.1+ or a license compatible with it (though the latter will
only be accepted for cases where the code originated elsewhere and was
imported into LXC).

Language bindings for the libraries need to be released under LGPLv2.1+.

Anything else (non-libraries) needs to be Free Software and needs to be
allowed to link with LGPLv2.1+ code (if needed). LXC upstream prefers
LGPLv2.1+ or GPLv2 for those.

When introducing a new file into the project, please make sure it has a
copyright header making clear under which license it's being released
and if it doesn't match the criteria described above, please explain
your decision on the lxc-devel mailing-list when submitting your patch.

This is intended to switch over files to LGPLv2.1+ to which end we have
collected ACKs from relevant people.
/* Affected People */
Christian Brauner <christian.brauner@ubuntu.com>
Fabrice Fontaine <fontaine.fabrice@gmail.com>
Josh Soref <jsoref@gmail.com>

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Acked-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Acked-by: Josh Soref <jsoref@gmail.com>
6 years agoMerge pull request #2843 from brauner/2019-02-11/fix_licensing_brauner
Stéphane Graber [Mon, 11 Feb 2019 16:58:23 +0000 (11:58 -0500)] 
Merge pull request #2843 from brauner/2019-02-11/fix_licensing_brauner

fix licensing headers

6 years agosyscall_wrappers: fix wrong licensing 2843/head
Christian Brauner [Mon, 11 Feb 2019 16:30:26 +0000 (17:30 +0100)] 
syscall_wrappers: fix wrong licensing

/* Affected People */
Christian Brauner <christian.brauner@ubuntu.com>
Aleksa Sarai <cyphar@cyphar.com>

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoringbuf.h: fix wrong licensing
Christian Brauner [Mon, 11 Feb 2019 16:29:31 +0000 (17:29 +0100)] 
ringbuf.h: fix wrong licensing

/* Affected People */
Christian Brauner <christian.brauner@ubuntu.com>

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agomemory_utils: fix wrong licensing
Christian Brauner [Mon, 11 Feb 2019 16:27:45 +0000 (17:27 +0100)] 
memory_utils: fix wrong licensing

/* Affected People */
Christian Brauner <christian.brauner@ubuntu.com>

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agorexec: fix wrong licensing
Christian Brauner [Mon, 11 Feb 2019 16:25:28 +0000 (17:25 +0100)] 
rexec: fix wrong licensing

/* Affected People */
Christian Brauner <christian.brauner@ubuntu.com>
Aleksa Sarai <asarai@suse.de>

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Acked-by: Aleksa Sarai <cyphar@cyphar.com>
6 years agoapi_extensions: fix wrong licensing
Christian Brauner [Mon, 11 Feb 2019 16:25:15 +0000 (17:25 +0100)] 
api_extensions: fix wrong licensing

/* Affected People */
Christian Brauner <christian.brauner@ubuntu.com>

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agofile_utils.h: fix wrong licensing
Christian Brauner [Mon, 11 Feb 2019 16:33:18 +0000 (17:33 +0100)] 
file_utils.h: fix wrong licensing

/* Affected People */
Christian Brauner <christian.brauner@ubuntu.com>

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocompiler: fix wrong licensing
Christian Brauner [Mon, 11 Feb 2019 16:23:52 +0000 (17:23 +0100)] 
compiler: fix wrong licensing

/* Affected People */
Christian Brauner <christian.brauner@ubuntu.com>

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoapi_extensions: fix wrong licensing
Christian Brauner [Mon, 11 Feb 2019 16:21:24 +0000 (17:21 +0100)] 
api_extensions: fix wrong licensing

/* Affected People */
Christian Brauner <christian.brauner@ubuntu.com>

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoMerge pull request #2841 from brauner/2019-02-11/fix_android
Stéphane Graber [Mon, 11 Feb 2019 15:27:57 +0000 (10:27 -0500)] 
Merge pull request #2841 from brauner/2019-02-11/fix_android

include: add fexecve() for Android's Bionic

6 years agoinclude: add fexecve() for Android's Bionic 2841/head
Christian Brauner [Mon, 11 Feb 2019 13:35:50 +0000 (14:35 +0100)] 
include: add fexecve() for Android's Bionic

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoCVE-2019-5736 (runC): rexec callers as memfd
Christian Brauner [Sat, 26 Jan 2019 00:19:29 +0000 (01:19 +0100)] 
CVE-2019-5736 (runC): rexec callers as memfd

Adam Iwaniuk and Borys Popławski discovered that an attacker can compromise the
runC host binary from inside a privileged runC container. As a result, this
could be exploited to gain root access on the host. runC is used as the default
runtime for containers with Docker, containerd, Podman, and CRI-O.

The attack can be made when attaching to a running container or when starting a
container running a specially crafted image.  For example, when runC attaches
to a container the attacker can trick it into executing itself. This could be
done by replacing the target binary inside the container with a custom binary
pointing back at the runC binary itself. As an example, if the target binary
was /bin/bash, this could be replaced with an executable script specifying the
interpreter path #!/proc/self/exe (/proc/self/exec is a symbolic link created
by the kernel for every process which points to the binary that was executed
for that process). As such when /bin/bash is executed inside the container,
instead the target of /proc/self/exe will be executed - which will point to the
runc binary on the host. The attacker can then proceed to write to the target
of /proc/self/exe to try and overwrite the runC binary on the host. However in
general, this will not succeed as the kernel will not permit it to be
overwritten whilst runC is executing. To overcome this, the attacker can
instead open a file descriptor to /proc/self/exe using the O_PATH flag and then
proceed to reopen the binary as O_WRONLY through /proc/self/fd/<nr> and try to
write to it in a busy loop from a separate process. Ultimately it will succeed
when the runC binary exits. After this the runC binary is compromised and can
be used to attack other containers or the host itself.

This attack is only possible with privileged containers since it requires root
privilege on the host to overwrite the runC binary. Unprivileged containers
with a non-identity ID mapping do not have the permission to write to the host
binary and therefore are unaffected by this attack.

LXC is also impacted in a similar manner by this vulnerability, however as the
LXC project considers privileged containers to be unsafe no CVE has been
assigned for this issue for LXC. Quoting from the
https://linuxcontainers.org/lxc/security/ project's Security information page:

"As privileged containers are considered unsafe, we typically will not consider
new container escape exploits to be security issues worthy of a CVE and quick
fix. We will however try to mitigate those issues so that accidental damage to
the host is prevented."

To prevent this attack, LXC has been patched to create a temporary copy of the
calling binary itself when it starts or attaches to containers. To do this LXC
creates an anonymous, in-memory file using the memfd_create() system call and
copies itself into the temporary in-memory file, which is then sealed to
prevent further modifications. LXC then executes this sealed, in-memory file
instead of the original on-disk binary. Any compromising write operations from
a privileged container to the host LXC binary will then write to the temporary
in-memory binary and not to the host binary on-disk, preserving the integrity
of the host LXC binary. Also as the temporary, in-memory LXC binary is sealed,
writes to this will also fail.

Note: memfd_create() was added to the Linux kernel in the 3.17 release.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Co-Developed-by: Alesa Sarai <asarai@suse.de>
Acked-by: Serge Hallyn <serge@hallyn.com>
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoMerge pull request #2839 from brauner/2019-02-10/handle_carriage_return
Stéphane Graber [Sun, 10 Feb 2019 23:21:49 +0000 (18:21 -0500)] 
Merge pull request #2839 from brauner/2019-02-10/handle_carriage_return

parse: handle \r

6 years agoparse: handle \r 2839/head
Christian Brauner [Sun, 10 Feb 2019 22:55:17 +0000 (23:55 +0100)] 
parse: handle \r

Closes #2838.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoMerge pull request #2836 from brauner/2019-02-10/fix_cgfsng_driver
Wolfgang Bumiller [Sun, 10 Feb 2019 10:34:41 +0000 (11:34 +0100)] 
Merge pull request #2836 from brauner/2019-02-10/fix_cgfsng_driver

cgroup: bugfixes

6 years agocgfsng: fix cgroup creation 2836/head
Christian Brauner [Sun, 10 Feb 2019 09:53:06 +0000 (10:53 +0100)] 
cgfsng: fix cgroup creation

When cgroup creation failed we reset container_cgroup to NULL to avoid
issues with __cleanup__. Fix that logic:
- add steal_ptr() based on take_ptr()
- move stealing the pointer out of the loop

lxc ctImport 20190210050705.858 DEBUG    network - network.c:instantiate_veth:202 - Instantiated veth "vethGQMH7I/vethSPXNL3", index is "272"
lxc ctImport 20190210050705.858 ERROR    cgfsng - cgroups/cgfsng.c:mkdir_eexist_on_last:1262 - File exists - Failed to create directory "/sys/fs/cgroup/unified//lxc.payload/ctImport-0"
lxc ctImport 20190210050705.858 ERROR    cgfsng - cgroups/cgfsng.c:container_create_path_for_hierarchy:1302 - Failed to create cgroup "/sys/fs/cgroup/unified//lxc.payload/ctImport-0"
lxc ctImport 20190210050705.858 ERROR    cgfsng - cgroups/cgfsng.c:cgfsng_payload_create:1431 - Failed to create cgroup "/sys/fs/cgroup/unified//lxc.payload/ctImport-0"
lxc ctImport 20190210050705.858 INFO     cgfsng - cgroups/cgfsng.c:cgfsng_payload_create:1441 - The container uses "lxc.payload/ctImport-0" as cgroup
lxc ctImport 20190210050705.858 ERROR    cgfsng - cgroups/cgfsng.c:mkdir_eexist_on_last:1262 - File exists - Failed to create directory "/sys/fs/cgroup/unified/"
lxc ctImport 20190210050705.858 ERROR    cgfsng - cgroups/cgfsng.c:container_create_path_for_hierarchy:1302 - Failed to create cgroup "/sys/fs/cgroup/unified/"
lxc ctImport 20190210050705.858 ERROR    cgfsng - cgroups/cgfsng.c:cgfsng_payload_create:1431 - Failed to create cgroup "/sys/fs/cgroup/unified/"
lxc ctImport 20190210050705.858 INFO     cgfsng - cgroups/cgfsng.c:cgfsng_payload_create:1441 - The container uses "(null)" as cgroup

Fixes: d97919abf22 ("cgroups: partially switch to cleanup macros")
Reported-by: Stéphane Graber <stgraber@ubuntu.com>
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocgfsng: coding style for cgfsng_payload_create()
Christian Brauner [Sun, 10 Feb 2019 09:52:45 +0000 (10:52 +0100)] 
cgfsng: coding style for cgfsng_payload_create()

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocgfsng: coding style for cgfsng_monitor_create()
Christian Brauner [Sun, 10 Feb 2019 09:51:43 +0000 (10:51 +0100)] 
cgfsng: coding style for cgfsng_monitor_create()

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoMerge pull request #2832 from brauner/2019-02-08/add_coccinelle
Stéphane Graber [Sat, 9 Feb 2019 21:58:36 +0000 (16:58 -0500)] 
Merge pull request #2832 from brauner/2019-02-08/add_coccinelle

coccinelle support

6 years agoMerge pull request #2829 from brauner/2019-02-08/capabilities
Stéphane Graber [Sat, 9 Feb 2019 21:57:01 +0000 (16:57 -0500)] 
Merge pull request #2829 from brauner/2019-02-08/capabilities

caps: check uid and euid

6 years agococcinelle: use standard exit identifiers 2832/head
Christian Brauner [Sat, 9 Feb 2019 10:23:54 +0000 (11:23 +0100)] 
coccinelle: use standard exit identifiers

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agococcinelle: s/while({1,true})/for(;;)/
Christian Brauner [Fri, 8 Feb 2019 22:57:06 +0000 (23:57 +0100)] 
coccinelle: s/while({1,true})/for(;;)/

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agococcinelle: add coccinelle support
Christian Brauner [Fri, 8 Feb 2019 22:56:51 +0000 (23:56 +0100)] 
coccinelle: add coccinelle support

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoMerge pull request #2833 from brauner/2019-02-09/bugfixes
Christian Brauner [Sat, 9 Feb 2019 10:03:42 +0000 (11:03 +0100)] 
Merge pull request #2833 from brauner/2019-02-09/bugfixes

bugfixes

6 years agolxc-init: exit with error on wait failure 2833/head
Christian Brauner [Sat, 9 Feb 2019 00:35:44 +0000 (01:35 +0100)] 
lxc-init: exit with error on wait failure

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agostart: prevent signed-issues
Christian Brauner [Sat, 9 Feb 2019 00:33:18 +0000 (01:33 +0100)] 
start: prevent signed-issues

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocgfsng: remove unnecessary check
Christian Brauner [Sat, 9 Feb 2019 00:31:52 +0000 (01:31 +0100)] 
cgfsng: remove unnecessary check

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocommands: remove unnecessary check
Christian Brauner [Sat, 9 Feb 2019 00:28:52 +0000 (01:28 +0100)] 
commands: remove unnecessary check

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoMerge pull request #2827 from brauner/2019-02-07/auto_cleanup
Serge Hallyn [Fri, 8 Feb 2019 21:57:37 +0000 (15:57 -0600)] 
Merge pull request #2827 from brauner/2019-02-07/auto_cleanup

cgroups: partially switch to cleanup macros

6 years agocaps: check uid and euid 2829/head
Christian Brauner [Fri, 8 Feb 2019 14:11:46 +0000 (15:11 +0100)] 
caps: check uid and euid

When we are running inside of a user namespace getuid() will return a
non-zero uid. So let's check euid as well to make sure we correctly drop
capabilities

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocgroups: partially switch to cleanup macros 2827/head
Christian Brauner [Thu, 7 Feb 2019 08:15:09 +0000 (09:15 +0100)] 
cgroups: partially switch to cleanup macros

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoMerge pull request #2825 from brauner/lxc/master
Christian Brauner [Wed, 6 Feb 2019 11:24:48 +0000 (12:24 +0100)] 
Merge pull request #2825 from brauner/lxc/master

README: add LGTM

6 years agoREADME: add LGTM 2825/head
Christian Brauner [Wed, 6 Feb 2019 11:23:17 +0000 (12:23 +0100)] 
README: add LGTM

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoMerge pull request #2821 from brauner/2019-02-05/remove_stack_allocation
Wolfgang Bumiller [Wed, 6 Feb 2019 11:10:48 +0000 (12:10 +0100)] 
Merge pull request #2821 from brauner/2019-02-05/remove_stack_allocation

tree-wide: wipe alloca() from the codebase

6 years agolxc-unshare: remove stack allocations 2821/head
Christian Brauner [Tue, 5 Feb 2019 06:47:18 +0000 (07:47 +0100)] 
lxc-unshare: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agooverlay: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:46:13 +0000 (07:46 +0100)] 
overlay: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agorbd: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:44:13 +0000 (07:44 +0100)] 
rbd: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agonbd: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:42:50 +0000 (07:42 +0100)] 
nbd: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agolvm: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:39:51 +0000 (07:39 +0100)] 
lvm: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoloop: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:38:02 +0000 (07:38 +0100)] 
loop: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoterminal: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:26:19 +0000 (07:26 +0100)] 
terminal: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agostring_utils: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:30:00 +0000 (07:30 +0100)] 
string_utils: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agostorage: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:32:21 +0000 (07:32 +0100)] 
storage: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agostart: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:25:12 +0000 (07:25 +0100)] 
start: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agopam_cgfs: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:33:48 +0000 (07:33 +0100)] 
pam_cgfs: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agonetwork: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:27:29 +0000 (07:27 +0100)] 
network: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agonamespace: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:23:19 +0000 (07:23 +0100)] 
namespace: remove stack allocations

Switch to a static stack instead of allocating a new one. There's really
no point in doing all of the dance to get the current pagesize.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agomonitor: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:31:16 +0000 (07:31 +0100)] 
monitor: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agolxccontainer: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:19:56 +0000 (07:19 +0100)] 
lxccontainer: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoconfile: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:12:17 +0000 (07:12 +0100)] 
confile: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoconf: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:08:44 +0000 (07:08 +0100)] 
conf: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocommands_utils: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:06:02 +0000 (07:06 +0100)] 
commands_utils: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocommands: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:02:07 +0000 (07:02 +0100)] 
commands: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agolxc_user_nic: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:01:50 +0000 (07:01 +0100)] 
lxc_user_nic: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocgroups: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:01:33 +0000 (07:01 +0100)] 
cgroups: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agolxcmntent: remove stack allocations
Christian Brauner [Tue, 5 Feb 2019 06:00:58 +0000 (07:00 +0100)] 
lxcmntent: remove stack allocations

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agomemory_utils: add memory_utils.h
Christian Brauner [Tue, 5 Feb 2019 05:51:55 +0000 (06:51 +0100)] 
memory_utils: add memory_utils.h

The header defines a simple wrapper for free() that can be used with
gcc's and clang's __attribute__((__cleanup__(<cleanup-fun>))) macro.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoMerge pull request #2824 from brauner/2019-02-05/compiler_based_hardening
Stéphane Graber [Tue, 5 Feb 2019 23:24:46 +0000 (18:24 -0500)] 
Merge pull request #2824 from brauner/2019-02-05/compiler_based_hardening

compiler: hardening

6 years agocompiler: -Wnested-externs hardening 2824/head
Christian Brauner [Tue, 5 Feb 2019 22:50:43 +0000 (23:50 +0100)] 
compiler: -Wnested-externs hardening

Warn if an extern declaration is encountered within a function.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocompiler: -Wdate-time hardening
Christian Brauner [Tue, 5 Feb 2019 22:49:48 +0000 (23:49 +0100)] 
compiler: -Wdate-time hardening

Warn when macros __TIME__, __DATE__ or __TIMESTAMP__ are encountered as
they might prevent bit-wise-identical reproducible compilations.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocompiler: -Werror=shift-overflow=2 hardening
Christian Brauner [Tue, 5 Feb 2019 22:48:32 +0000 (23:48 +0100)] 
compiler: -Werror=shift-overflow=2 hardening

Warn about left shift overflows. This warning is enabled by default in
C99 and C++11 modes (and newer).

-Wshift-overflow=2
This warning level also warns about left-shifting 1 into the sign bit,
unless C++14 mode (or newer) is active.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocompiler: -Werror=shift-count-overflow hardening
Christian Brauner [Tue, 5 Feb 2019 22:47:31 +0000 (23:47 +0100)] 
compiler: -Werror=shift-count-overflow hardening

Warn if shift count >= width of type.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocompiler: fix -fstack-protector-strong
Christian Brauner [Tue, 5 Feb 2019 22:44:20 +0000 (23:44 +0100)] 
compiler: fix -fstack-protector-strong

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocompiler: -fdiagnostics-show-option
Christian Brauner [Tue, 5 Feb 2019 22:25:19 +0000 (23:25 +0100)] 
compiler: -fdiagnostics-show-option

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocompiler: -Werror=overflow hardening
Christian Brauner [Tue, 5 Feb 2019 22:21:43 +0000 (23:21 +0100)] 
compiler: -Werror=overflow hardening

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocompiler: -Wendif-labels hardening
Christian Brauner [Tue, 5 Feb 2019 22:15:05 +0000 (23:15 +0100)] 
compiler: -Wendif-labels hardening

Do not warn whenever an #else or an #endif are followed by text.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoMerge pull request #2823 from brauner/2019-02-05/compiler_based_hardening
Stéphane Graber [Tue, 5 Feb 2019 21:55:36 +0000 (16:55 -0500)] 
Merge pull request #2823 from brauner/2019-02-05/compiler_based_hardening

compiler: hardening

6 years agocompiler: -Wshadow hardening 2823/head
Christian Brauner [Tue, 5 Feb 2019 19:56:08 +0000 (20:56 +0100)] 
compiler: -Wshadow hardening

Warn whenever a local variable or type declaration shadows another
variable, parameter, type, class member (in C++), or instance variable
(in Objective-C) or whenever a built-in function is shadowed.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocompiler: set -Wimplicit-fallthrough to 5
Christian Brauner [Tue, 5 Feb 2019 19:54:33 +0000 (20:54 +0100)] 
compiler: set -Wimplicit-fallthrough to 5

-Wimplicit-fallthrough=5 doesn’t recognize any comments as fallthrough
comments, only attributes disable the warning.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocompiler: -Wformat=2 hardening
Christian Brauner [Tue, 5 Feb 2019 19:51:50 +0000 (20:51 +0100)] 
compiler: -Wformat=2 hardening

Enable -Wformat plus additional format checks. Currently equivalent to
-Wformat -Wformat-nonliteral -Wformat-security -Wformat-y2k.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocompiler: -Werror=incompatible-pointer-types
Christian Brauner [Tue, 5 Feb 2019 19:49:59 +0000 (20:49 +0100)] 
compiler: -Werror=incompatible-pointer-types

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocompiler: -Werror=return-type hardening
Christian Brauner [Tue, 5 Feb 2019 19:48:45 +0000 (20:48 +0100)] 
compiler: -Werror=return-type hardening

Warn whenever a function is defined with a return type that defaults to
int. Also warn about any return statement with no return value in a
function whose return type is not void (falling off the end of the
function body is considered returning without a value).

For C only, warn about a return statement with an expression in a
function whose return type is void, unless the expression type is also
void. As a GNU extension, the latter case is accepted without a warning
unless -Wpedantic is used.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocompiler: -Wsuggest-attribute=noreturn hardening
Christian Brauner [Tue, 5 Feb 2019 19:44:57 +0000 (20:44 +0100)] 
compiler: -Wsuggest-attribute=noreturn hardening

Warn about functions that might be candidates for attributes pure, const
or noreturn or malloc.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocompiler: -Wfloat-equal hardening
Christian Brauner [Tue, 5 Feb 2019 19:43:52 +0000 (20:43 +0100)] 
compiler: -Wfloat-equal hardening

Warn if floating-point values are used in equality comparisons.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocompiler: -Winit-self hardening
Christian Brauner [Tue, 5 Feb 2019 19:43:00 +0000 (20:43 +0100)] 
compiler: -Winit-self hardening

Warn about uninitialized variables that are initialized with themselves.
Note this option can only be used with the -Wuninitialized option.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocompiler: -Wold-style-definition hardening
Christian Brauner [Tue, 5 Feb 2019 19:33:40 +0000 (20:33 +0100)] 
compiler: -Wold-style-definition hardening

Warn if an old-style function definition is used. A warning is given
even if there is a previous prototype.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocompiler: -Wmissing-include-dirs hardening
Christian Brauner [Tue, 5 Feb 2019 19:31:20 +0000 (20:31 +0100)] 
compiler: -Wmissing-include-dirs hardening

Warn if a user-supplied include directory does not exist.

This already surfaced a bug that is fixed by this commit.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocompiler: -Wlogical-op hardening
Christian Brauner [Tue, 5 Feb 2019 19:29:21 +0000 (20:29 +0100)] 
compiler: -Wlogical-op hardening

Warn about suspicious uses of logical operators in expressions.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoMerge pull request #2822 from tomponline/tp-rpmspec
Stéphane Graber [Tue, 5 Feb 2019 17:16:41 +0000 (18:16 +0100)] 
Merge pull request #2822 from tomponline/tp-rpmspec

fix rpm packaging for bash completion directory.

6 years agofix rpm packaging for bash completion directory. 2822/head
tomponline [Tue, 5 Feb 2019 17:10:20 +0000 (17:10 +0000)] 
fix rpm packaging for bash completion directory.

Closed #1825

Signed-off-by: tomponline <tomp@tomp.uk>
6 years agoMerge pull request #2820 from brauner/2019-01-31/cgfsng_sys/kernel/cgroup/delegate
Stéphane Graber [Fri, 1 Feb 2019 11:38:14 +0000 (12:38 +0100)] 
Merge pull request #2820 from brauner/2019-01-31/cgfsng_sys/kernel/cgroup/delegate

cgroups: use of /sys/kernel/cgroup/delegate file

6 years agoMerge pull request #2787 from Blub/2019-01-17/revert-sys-double-bindmount-cleanup
Stéphane Graber [Fri, 1 Feb 2019 11:37:38 +0000 (12:37 +0100)] 
Merge pull request #2787 from Blub/2019-01-17/revert-sys-double-bindmount-cleanup

Revert "conf: remove extra MS_BIND with sysfs:mixed"

6 years agocgroups: use of /sys/kernel/cgroup/delegate file 2820/head
Christian Brauner [Fri, 1 Feb 2019 09:57:49 +0000 (10:57 +0100)] 
cgroups: use of /sys/kernel/cgroup/delegate file

This file contains the files one needs to chown to successfully delegate
cgroup files to unprivileged users.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoMerge pull request #2806 from brauner/2019-01-27/bugfixes
Christian Brauner [Thu, 31 Jan 2019 10:38:04 +0000 (11:38 +0100)] 
Merge pull request #2806 from brauner/2019-01-27/bugfixes

freezer: non-functional changes

6 years agofreezer: non-functional changes 2806/head
Christian Brauner [Sun, 27 Jan 2019 01:04:21 +0000 (02:04 +0100)] 
freezer: non-functional changes

Fix the coding style in a few files.

Fixes: db1228b35f3e ("Avoid hardcoded string length")
Fixes: 71fc9c046816 ("Avoid risk of "too far memory read"")
Fixes: 2341916a0367 ("Avoid double lxc-freeze/unfreeze")
Fixes: 9eb9ce3e4778 ("Update freezer.c")
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoMerge pull request #2817 from Rachid-Koucha/patch-5
Christian Brauner [Tue, 29 Jan 2019 12:06:22 +0000 (13:06 +0100)] 
Merge pull request #2817 from Rachid-Koucha/patch-5

More accurate error msg for template file

6 years agoMore accurate error msg for template file 2817/head
Rachid Koucha [Tue, 29 Jan 2019 11:20:46 +0000 (12:20 +0100)] 
More accurate error msg for template file

When calling lxc-create, if the template exists but is not executable, we end with the following error messages which make believe that the template file does not exist when it is merely a execute access problem:

lxc-create: ctn00: utils.c: get_template_path: 918 No such file or directory - bad template: /.../lxc-busybox
lxc-create: ctn00: lxccontainer.c: do_lxcapi_create: 1786 Unknown template "/.../lxc-busybox"
lxc-create: ctn00: tools/lxc_create.c: main: 327 Failed to create container ctn00

Actually internally the errno is lost as the following code triggers a useless access to (strace output):

access("/.../lxc-busybox", X_OK) = -1 ENOENT (No such file or directory)

With the above fix, we get a more explicit error message when the template file is missing the "execute" bit:

lxc-create: bbc: utils.c: get_template_path: 917 Permission denied - Bad template pathname: /tmp/azerty
lxc-create: bbc: lxccontainer.c: do_lxcapi_create: 1816 Unknown template "/tmp/azerty"
lxc-create: bbc: tools/lxc_create.c: main: 331 Failed to create container bbc

With the above fix, we get a more explicit error message when the pathname of the template file is incorrect:

lxc-create: bbc: utils.c: get_template_path: 917 No such file or directory - Bad template pathname: /tmp/qwerty
lxc-create: bbc: lxccontainer.c: do_lxcapi_create: 1816 Unknown template "/tmp/qwerty"
lxc-create: bbc: tools/lxc_create.c: main: 331 Failed to create container bbc

Signed-off-by: Rachid Koucha <rachid.koucha@gmail.com>
6 years agoMerge pull request #2807 from brauner/2019-01-27/mount_entries
Stéphane Graber [Mon, 28 Jan 2019 22:24:01 +0000 (17:24 -0500)] 
Merge pull request #2807 from brauner/2019-01-27/mount_entries

conf: check for successful mount entry parse

6 years agoMerge pull request #2814 from tenforward/japanese
Christian Brauner [Mon, 28 Jan 2019 10:54:45 +0000 (11:54 +0100)] 
Merge pull request #2814 from tenforward/japanese

doc: Add lxc.seccomp.allow_nesting to Japanese lxc.container.conf(5)

6 years agodoc: Add lxc.seccomp.allow_nesting to Japanese lxc.container.conf(5) 2814/head
KATOH Yasufumi [Mon, 28 Jan 2019 10:01:40 +0000 (19:01 +0900)] 
doc: Add lxc.seccomp.allow_nesting to Japanese lxc.container.conf(5)

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
6 years agoMerge pull request #2813 from brauner/2019-01-27/bugfixes_2
Serge Hallyn [Mon, 28 Jan 2019 03:41:49 +0000 (21:41 -0600)] 
Merge pull request #2813 from brauner/2019-01-27/bugfixes_2

compiler: remove deprecated and unneeded header

6 years agoprlimit: remove deprecated and unneeded header 2813/head
Christian Brauner [Sun, 27 Jan 2019 22:05:47 +0000 (23:05 +0100)] 
prlimit: remove deprecated and unneeded header

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agocompiler: remove deprecated and unneeded header
Christian Brauner [Sun, 27 Jan 2019 22:02:49 +0000 (23:02 +0100)] 
compiler: remove deprecated and unneeded header

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
6 years agoMerge pull request #2812 from Rachid-Koucha/patch-7
Christian Brauner [Sun, 27 Jan 2019 13:03:40 +0000 (14:03 +0100)] 
Merge pull request #2812 from Rachid-Koucha/patch-7

/etc/resolv.conf grows indefinitely

6 years ago/etc/resolv.conf grows indefinitely 2812/head
Rachid Koucha [Sun, 27 Jan 2019 12:46:48 +0000 (13:46 +0100)] 
/etc/resolv.conf grows indefinitely

This file grows indefinitely : upon each DHCP lease renew,
the "nameserver ..dns..." line is added at the end of the file.
Make a "grep" in the file to make sure that the same line
does not already exist.

Signed-off-by: Rachid Koucha <rachid.koucha@gmail.com>