]> git.ipfire.org Git - thirdparty/lxc.git/log
thirdparty/lxc.git
4 years agoconfile: convert AppArmor and SELinux confile parsing from errors to warnings 3835/head
Christian Brauner [Mon, 10 May 2021 15:39:07 +0000 (17:39 +0200)] 
confile: convert AppArmor and SELinux confile parsing from errors to warnings

Fixes: https://github.com/lxc/lxc/issues/3765#issuecomment-836792820
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agotests: fix lxc-test-arch-parse for make dist
Christian Brauner [Mon, 10 May 2021 15:05:04 +0000 (17:05 +0200)] 
tests: fix lxc-test-arch-parse for make dist

Fixes: https://jenkins.linuxcontainers.org/job/lxc-build-tarballs/2762/console
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agotests: add tests for supported architectures
Christian Brauner [Sun, 9 May 2021 14:11:12 +0000 (16:11 +0200)] 
tests: add tests for supported architectures

Ensure that we detect all supported architectures and don't regress
recognizing them.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconfile: re-add aarch64 architecture
Christian Brauner [Sun, 9 May 2021 13:44:59 +0000 (15:44 +0200)] 
confile: re-add aarch64 architecture

Apparenty we dropped this when we cleaned up architecture handling.

Fixes: #3832
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoReflow ZFS check to follow the style of the overlayfs return.
Jeff Cook [Sun, 9 May 2021 11:29:05 +0000 (05:29 -0600)] 
Reflow ZFS check to follow the style of the overlayfs return.

Per https://github.com/lxc/lxc/pull/3831#discussion_r628865713

Signed-off-by: Jeff Cook <jeff@jeffcook.io>
4 years agoSkip rootfs pinning for ZFS roots.
Jeff Cook [Sun, 9 May 2021 02:46:42 +0000 (20:46 -0600)] 
Skip rootfs pinning for ZFS roots.

Signed-off-by: Jeff Cook <jeff@jeffcook.io>
4 years agodoc: document new idmap= option for lxc.rootfs.options
Christian Brauner [Fri, 7 May 2021 15:21:18 +0000 (17:21 +0200)] 
doc: document new idmap= option for lxc.rootfs.options

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconf: handle kernels with CAP_SETFCAP
Christian Brauner [Thu, 6 May 2021 16:16:45 +0000 (18:16 +0200)] 
conf: handle kernels with CAP_SETFCAP

LXC is being very clever and sometimes maps the caller's uid into the
child userns. This means that the caller can technically write fscaps
that are valid in the ancestor userns (which can be a security issue in
some scenarios) so newer kernels require CAP_SETFCAP to do this. Until
newuidmap/newgidmap are updated to account for this simply write the
mapping directly in this case.

Cc: stable-4.0
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoRelease LXC 4.0.9 lxc-4.0.9
Stéphane Graber [Tue, 4 May 2021 16:56:15 +0000 (12:56 -0400)] 
Release LXC 4.0.9

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
4 years agoattach: introduce explicit personality macro
Christian Brauner [Tue, 4 May 2021 14:16:36 +0000 (16:16 +0200)] 
attach: introduce explicit personality macro

Introduce LXC_ATTACH_DETECT_PERSONALITY to make it explicit what is
happening instead of using -1.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconf: add personality_t
Christian Brauner [Tue, 4 May 2021 14:09:48 +0000 (16:09 +0200)] 
conf: add personality_t

Catch errors in personality handling better.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoattach_options: unbreak header
Christian Brauner [Tue, 4 May 2021 13:43:38 +0000 (15:43 +0200)] 
attach_options: unbreak header

In a moment of idioticity I switch -1 with 0xffffffff in the header
definition but we use -1 to autodetect.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconf: rework lxc_config_parse_arch()
Christian Brauner [Tue, 4 May 2021 11:38:52 +0000 (13:38 +0200)] 
conf: rework lxc_config_parse_arch()

Fix architecture parsing. So far we couldn't really differ between "want
default architecture" and "failed to parse requested architecture"
because the -1 return value means both. Fix this by using the return
value only to indicate success or failure and return the parsed
personality in a return argument.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconf: tweak setup_personality()
Christian Brauner [Tue, 4 May 2021 11:30:20 +0000 (13:30 +0200)] 
conf: tweak setup_personality()

Use the dedicated LXC_ARCH_UNCHANGED macro everywhere instead of relying
on -1 being correct.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agotree-wide: make personality codepaths unconditional
Christian Brauner [Tue, 4 May 2021 11:27:20 +0000 (13:27 +0200)] 
tree-wide: make personality codepaths unconditional

Now that we have the infra to make personality handling unconitional
remove the ifndefs everywhere.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agosyscalls: wrap personality syscall if undefined
Christian Brauner [Tue, 4 May 2021 11:21:28 +0000 (13:21 +0200)] 
syscalls: wrap personality syscall if undefined

There's no need to making personality handling conditional as it has
been around for such a long time that only weird systems wouldn't have
support for it. And especially if the user requested a specific
personality to be set but the system doesn't support the personality
syscall we should loudly fail instead of moving on.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agocommands: log at debug not info level when receiving file descriptors
Christian Brauner [Tue, 4 May 2021 06:59:24 +0000 (08:59 +0200)] 
commands: log at debug not info level when receiving file descriptors

Don't spam the logs because we do receive a lot of file descriptors.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconfile: make per_name struct static
Christian Brauner [Tue, 4 May 2021 06:57:52 +0000 (08:57 +0200)] 
confile: make per_name struct static

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agostring_utils: get around GCC-11 false positives
Evgeny Vereshchagin [Mon, 3 May 2021 20:44:05 +0000 (20:44 +0000)] 
string_utils: get around GCC-11 false positives

by getting rid of stpncpy

Tested with gcc (GCC) 11.1.1 20210428 (Red Hat 11.1.1-1)

Closes https://github.com/lxc/lxc/issues/3752

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agogithub: also pass the j option to make
Evgeny Vereshchagin [Mon, 3 May 2021 22:35:19 +0000 (22:35 +0000)] 
github: also pass the j option to make

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agogithub: remove the dh-* packages
Evgeny Vereshchagin [Mon, 3 May 2021 22:31:55 +0000 (22:31 +0000)] 
github: remove the dh-* packages

We don't build any packages there so it seems we don't need
those packages any more. Apart from that, it should make the
script work on Ubuntu Hirsute where dh-systemd was merged into
debhelper and is no longer available.

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agogithub: Run apt-get update in sanitizer test
Stéphane Graber [Mon, 3 May 2021 12:02:14 +0000 (08:02 -0400)] 
github: Run apt-get update in sanitizer test

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
4 years agoconf: fix console chmod error log messages
Aaron Thompson [Sat, 1 May 2021 01:20:14 +0000 (01:20 +0000)] 
conf: fix console chmod error log messages

Signed-off-by: Aaron Thompson <dev@aaront.org>
4 years agooss-fuzz: always turn off logging on OSS-Fuzz
Evgeny Vereshchagin [Fri, 30 Apr 2021 11:08:34 +0000 (11:08 +0000)] 
oss-fuzz: always turn off logging on OSS-Fuzz

Apparently /proc/self/cmd can't be used (reliably) on OSS-Fuzz to figure out
whether the code is run inside the fuzz targets, which causes the
fuzz targets to fill the filesystem with log files.

Related: https://github.com/google/oss-fuzz/issues/5509
Should address https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=33835

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agoRelease LXC 4.0.8 lxc-4.0.8
Stéphane Graber [Fri, 30 Apr 2021 18:11:01 +0000 (14:11 -0400)] 
Release LXC 4.0.8

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
4 years agocgroups: fix fallback attach codepath
Christian Brauner [Fri, 30 Apr 2021 13:47:35 +0000 (15:47 +0200)] 
cgroups: fix fallback attach codepath

When we attach to an old server the server can return ENOSYS instead of
ENOCGROUP2 which causes LXC to abort the attach unnecessary. Fix this!

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agostorage: fix dup_cloexec() call
Christian Brauner [Fri, 30 Apr 2021 08:35:06 +0000 (10:35 +0200)] 
storage: fix dup_cloexec() call

Fixes: Coverity 1477399
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoRelease LXC 4.0.7 lxc-4.0.7
Stéphane Graber [Thu, 29 Apr 2021 20:55:34 +0000 (16:55 -0400)] 
Release LXC 4.0.7

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
4 years agoapi-extensions: add entry for idmapped_mounts
Christian Brauner [Wed, 28 Apr 2021 13:38:48 +0000 (15:38 +0200)] 
api-extensions: add entry for idmapped_mounts

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agostorage/dir: cleanup mount code
Christian Brauner [Wed, 28 Apr 2021 09:33:37 +0000 (11:33 +0200)] 
storage/dir: cleanup mount code

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agostorage/dir: remove error handling down
Christian Brauner [Wed, 28 Apr 2021 09:27:58 +0000 (11:27 +0200)] 
storage/dir: remove error handling down

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agostorage/dir: source can't be empty
Christian Brauner [Wed, 28 Apr 2021 09:26:59 +0000 (11:26 +0200)] 
storage/dir: source can't be empty

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agostorage/dir: use "source" and "target" as terms
Christian Brauner [Wed, 28 Apr 2021 09:26:11 +0000 (11:26 +0200)] 
storage/dir: use "source" and "target" as terms

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agostorage/dir: retrieve proper source path later
Christian Brauner [Wed, 28 Apr 2021 09:24:15 +0000 (11:24 +0200)] 
storage/dir: retrieve proper source path later

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agostorage/dir: use clear error messages
Christian Brauner [Wed, 28 Apr 2021 09:23:03 +0000 (11:23 +0200)] 
storage/dir: use clear error messages

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agostorage/dir: bdev->dest can't be empty
Christian Brauner [Wed, 28 Apr 2021 09:21:03 +0000 (11:21 +0200)] 
storage/dir: bdev->dest can't be empty

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agodir: use mnt_opts->data instead of mntdata
Christian Brauner [Wed, 28 Apr 2021 09:19:47 +0000 (11:19 +0200)] 
dir: use mnt_opts->data instead of mntdata

Fixes: https://launchpadlibrarian.net/535845165/buildlog_ubuntu-focal-s390x.lxc_1%3A4.0.6+master~20210427-2321-0ubuntu1~focal_BUILDING.txt.gz
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agobuild-system: turn off lto=thin when building the fuzzers
Evgeny Vereshchagin [Tue, 27 Apr 2021 00:03:39 +0000 (00:03 +0000)] 
build-system: turn off lto=thin when building the fuzzers

With lto=thin the fuzzers fail as soon as they start with
```
ERROR: The size of coverage PC tables does not match the
number of instrumented PCs. This might be a compiler bug,
please contact the libFuzzer developers.
Also check https://bugs.llvm.org/show_bug.cgi?id=34636
for possible workarounds (tl;dr: don't use the old GNU ld)
```

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agotests: run the fuzzers along with the other tests
Evgeny Vereshchagin [Mon, 26 Apr 2021 21:41:54 +0000 (21:41 +0000)] 
tests: run the fuzzers along with the other tests

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agolog: create log files in "fuzzing" mode if it's called outside fuzz targets
Evgeny Vereshchagin [Wed, 14 Apr 2021 18:37:08 +0000 (18:37 +0000)] 
log: create log files in "fuzzing" mode if it's called outside fuzz targets

to make it possible to run the fuzzers along with the other tests

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agoci: switch to --enable-fuzzers
Evgeny Vereshchagin [Wed, 14 Apr 2021 09:22:51 +0000 (09:22 +0000)] 
ci: switch to --enable-fuzzers

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agobuild-system: add --enable-fuzzers
Evgeny Vereshchagin [Wed, 14 Apr 2021 09:20:31 +0000 (09:20 +0000)] 
build-system: add --enable-fuzzers

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agoconf: improve idmapped mounts support
Christian Brauner [Sun, 25 Apr 2021 10:23:56 +0000 (12:23 +0200)] 
conf: improve idmapped mounts support

Setting up a detached idmapped mount is a privileged operation, mounting
it doesn't have to be.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconf: s/lxc_rootfs_prepare/lxc_rootfs_init/g
Christian Brauner [Sun, 25 Apr 2021 09:02:15 +0000 (11:02 +0200)] 
conf: s/lxc_rootfs_prepare/lxc_rootfs_init/g

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconf: move all mount options into struct lxc_mount_options
Christian Brauner [Sun, 25 Apr 2021 08:24:17 +0000 (10:24 +0200)] 
conf: move all mount options into struct lxc_mount_options

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconf: stash lxc_storage into lxc_rootfs and bind to its lifetime
Christian Brauner [Sun, 25 Apr 2021 07:59:42 +0000 (09:59 +0200)] 
conf: stash lxc_storage into lxc_rootfs and bind to its lifetime

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconfigure: fix function detection
Christian Brauner [Sat, 24 Apr 2021 09:19:53 +0000 (11:19 +0200)] 
configure: fix function detection

Fixes: #3809
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agodir: fix rootfs mounting
Christian Brauner [Fri, 23 Apr 2021 09:29:47 +0000 (11:29 +0200)] 
dir: fix rootfs mounting

We need to be able to lookup symlinks and allow xdev.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconf: don't overrun dest buffer in parse_lxc_mntopts()
Christian Brauner [Thu, 22 Apr 2021 19:09:12 +0000 (21:09 +0200)] 
conf: don't overrun dest buffer in parse_lxc_mntopts()

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconf: better naming
Christian Brauner [Thu, 22 Apr 2021 18:55:46 +0000 (20:55 +0200)] 
conf: better naming

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agogetsubopt: use correct include
Christian Brauner [Thu, 22 Apr 2021 11:43:27 +0000 (13:43 +0200)] 
getsubopt: use correct include

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoMakefile: fix strchrnul() inclusion
Christian Brauner [Thu, 22 Apr 2021 09:00:09 +0000 (11:00 +0200)] 
Makefile: fix strchrnul() inclusion

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconf: include strchrnul for platforms that don't support it
Christian Brauner [Thu, 22 Apr 2021 07:45:13 +0000 (09:45 +0200)] 
conf: include strchrnul for platforms that don't support it

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agostrchrnul: include header
Christian Brauner [Thu, 22 Apr 2021 07:44:07 +0000 (09:44 +0200)] 
strchrnul: include header

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconf: don't allow idmapped lxc.mount.{entry,fstab} just yet
Christian Brauner [Sat, 20 Mar 2021 10:40:19 +0000 (11:40 +0100)] 
conf: don't allow idmapped lxc.mount.{entry,fstab} just yet

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconf: tweak parse_lxc_mntopts()
Christian Brauner [Thu, 18 Mar 2021 11:15:01 +0000 (12:15 +0100)] 
conf: tweak parse_lxc_mntopts()

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoapparmor: handle on-exec
Christian Brauner [Thu, 18 Mar 2021 10:24:18 +0000 (11:24 +0100)] 
apparmor:  handle on-exec

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoattach: use correct lxc_namespace_t type
Christian Brauner [Thu, 18 Mar 2021 09:40:43 +0000 (10:40 +0100)] 
attach: use correct lxc_namespace_t type

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoattach: visually separate pids from fds during initalization
Christian Brauner [Thu, 18 Mar 2021 09:40:13 +0000 (10:40 +0100)] 
attach: visually separate pids from fds during initalization

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconf: verify that the rootfs can support idmapped mounts
Christian Brauner [Wed, 17 Mar 2021 15:43:15 +0000 (16:43 +0100)] 
conf: verify that the rootfs can support idmapped mounts

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agostart: documented idmapped mounts
Christian Brauner [Wed, 17 Mar 2021 15:22:46 +0000 (16:22 +0100)] 
start: documented idmapped mounts

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agomount_utils: add two detached mount helpers
Christian Brauner [Wed, 17 Mar 2021 15:16:48 +0000 (16:16 +0100)] 
mount_utils: add two detached mount helpers

They'll come in handy in the future.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconf: support idmapping directories
Christian Brauner [Wed, 17 Mar 2021 10:39:13 +0000 (11:39 +0100)] 
conf: support idmapping directories

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agomount_utils: add helper to determine whether new mount api supports bind mounts
Christian Brauner [Wed, 17 Mar 2021 10:07:47 +0000 (11:07 +0100)] 
mount_utils: add helper to determine whether new mount api supports bind mounts

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agostorage: keep a reference to lxc_rootfs in lxc_storage
Christian Brauner [Wed, 17 Mar 2021 10:03:04 +0000 (11:03 +0100)] 
storage: keep a reference to lxc_rootfs in lxc_storage

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agomount_utils: add support for mount_setattr() syscall
Christian Brauner [Wed, 17 Mar 2021 09:54:19 +0000 (10:54 +0100)] 
mount_utils: add support for mount_setattr() syscall

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconfile: parse idmap=<path> mount option for rootfs
Christian Brauner [Wed, 17 Mar 2021 09:45:29 +0000 (10:45 +0100)] 
confile: parse idmap=<path> mount option for rootfs

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconf: add first, trivial support for idmapped mounts
Christian Brauner [Wed, 17 Mar 2021 09:35:33 +0000 (10:35 +0100)] 
conf: add first, trivial support for idmapped mounts

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconf: rework lxc specific mount option parsing
Christian Brauner [Wed, 17 Mar 2021 09:01:19 +0000 (10:01 +0100)] 
conf: rework lxc specific mount option parsing

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoseccomp: init and destroy notifier.cookie
Evgeny Vereshchagin [Thu, 15 Apr 2021 07:09:10 +0000 (07:09 +0000)] 
seccomp: init and destroy notifier.cookie

It's a follow-up to 84cf6d259b24e4ad48e

Closes https://github.com/lxc/lxc/issues/3806

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agoautoconf: stop passing -fsanitize=address via AM_LDFLAGS
Evgeny Vereshchagin [Tue, 13 Apr 2021 23:55:23 +0000 (23:55 +0000)] 
autoconf: stop passing -fsanitize=address via AM_LDFLAGS

The snippet is redundant because the build system automatically
passes the sanitizers flags set in AM_CFLAGS to the linker

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agoci: get rid of the -static-libasan stopgap
Evgeny Vereshchagin [Tue, 13 Apr 2021 23:33:44 +0000 (23:33 +0000)] 
ci: get rid of the -static-libasan stopgap

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agobuild-system: stop building init.lxc.static with sanitizers
Evgeny Vereshchagin [Tue, 13 Apr 2021 22:55:53 +0000 (22:55 +0000)] 
build-system: stop building init.lxc.static with sanitizers

`-static` isn't compatible with `-fsanitize=`:
```
gcc: error: cannot specify -static with -fsanitize=address
```

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agoautoconf: add AC_LANG_SOURCE to CC_CHECK_LDFLAGS
Evgeny Vereshchagin [Tue, 13 Apr 2021 21:54:15 +0000 (21:54 +0000)] 
autoconf: add AC_LANG_SOURCE to CC_CHECK_LDFLAGS

Inspired by https://lore.kernel.org/alsa-devel/18135209-abc9-ca1c-84e0-8ac3e75caaf1@perex.cz/t/

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agoci: make use of --enable-sanitizers instead of CFLAGS
Evgeny Vereshchagin [Tue, 13 Apr 2021 14:45:29 +0000 (14:45 +0000)] 
ci: make use of --enable-sanitizers instead of CFLAGS

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agotests: free the buffer filled by lxc_cmd_rsp_recv
Evgeny Vereshchagin [Tue, 13 Apr 2021 06:23:03 +0000 (06:23 +0000)] 
tests: free the buffer filled by lxc_cmd_rsp_recv

Fixes https://github.com/lxc/lxc/issues/3796

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agoRevert "ci: get around https://github.com/lxc/lxc/issues/3796"
Evgeny Vereshchagin [Tue, 13 Apr 2021 06:03:20 +0000 (06:03 +0000)] 
Revert "ci: get around https://github.com/lxc/lxc/issues/3796"

This reverts commit 44818e893e68e6e76652323ff4f12c9214d2ffa7.

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agoci: build with -Wall -Werror
Evgeny Vereshchagin [Mon, 12 Apr 2021 22:40:35 +0000 (22:40 +0000)] 
ci: build with -Wall -Werror

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agoci: turn on strict_string_checks
Evgeny Vereshchagin [Mon, 12 Apr 2021 19:30:50 +0000 (19:30 +0000)] 
ci: turn on strict_string_checks

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agoci: get around https://github.com/lxc/lxc/issues/3796
Evgeny Vereshchagin [Mon, 12 Apr 2021 18:03:50 +0000 (18:03 +0000)] 
ci: get around https://github.com/lxc/lxc/issues/3796

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agoci: prevent lxc-exercise from running indefinitely
Evgeny Vereshchagin [Mon, 12 Apr 2021 17:38:11 +0000 (17:38 +0000)] 
ci: prevent lxc-exercise from running indefinitely

and show all the commands it runs to make it easier to
debug potential issues.

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agoci: get around https://github.com/lxc/lxc/issues/3788
Evgeny Vereshchagin [Mon, 12 Apr 2021 17:36:50 +0000 (17:36 +0000)] 
ci: get around https://github.com/lxc/lxc/issues/3788

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agoci: get around https://github.com/lxc/lxc/issues/3798
Evgeny Vereshchagin [Mon, 12 Apr 2021 16:29:44 +0000 (16:29 +0000)] 
ci: get around https://github.com/lxc/lxc/issues/3798

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agoci: switch to lxc-exercise from the lxc-ci repository
Evgeny Vereshchagin [Mon, 12 Apr 2021 16:25:31 +0000 (16:25 +0000)] 
ci: switch to lxc-exercise from the lxc-ci repository

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agoci: link lib[au]san with init.lxc.static statically
Evgeny Vereshchagin [Mon, 12 Apr 2021 04:19:11 +0000 (04:19 +0000)] 
ci: link lib[au]san with init.lxc.static statically

init.lxc.static is run in arbitrary containers where the libasan library lxc has been built with
isn't always installed. To make it work let's override GCC's default and link both libasan
and libubsan statically. It should help to fix issues like
```
++ lxc-execute -n c1 -- sudo -u ubuntu /nnptest
lxc-init: error while loading shared libraries: libasan.so.5: cannot open shared object file: No such file or directory
```

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agoci: an attempt to run the tests under ASan/UBsan
Evgeny Vereshchagin [Sun, 11 Apr 2021 00:38:56 +0000 (00:38 +0000)] 
ci: an attempt to run the tests under ASan/UBsan

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agoapparmor: turn bytes into null-terminated strings before calling strcspn
Evgeny Vereshchagin [Mon, 12 Apr 2021 20:39:48 +0000 (20:39 +0000)] 
apparmor: turn bytes into null-terminated strings before calling strcspn

```
==70349==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6020000009fb at pc 0x000000433b70 bp 0x7ffcde087810 sp 0x7ffcde086fd0
READ of size 12 at 0x6020000009fb thread T0
    #0 0x433b6f in strcspn (/usr/bin/lxc-execute+0x433b6f)
    #1 0x7f720413a5cb in apparmor_process_label_get /home/runner/work/lxc/lxc/src/lxc/lsm/apparmor.c:449:8
    #2 0x7f720413bc2a in apparmor_prepare /home/runner/work/lxc/lxc/src/lxc/lsm/apparmor.c:1104:13
    #3 0x7f720409b6e9 in lxc_init /home/runner/work/lxc/lxc/src/lxc/start.c:848:8
    #4 0x7f72040a395a in __lxc_start /home/runner/work/lxc/lxc/src/lxc/start.c:2009:8
    #5 0x7f7203fc7186 in lxc_execute /home/runner/work/lxc/lxc/src/lxc/execute.c:99:9
    #6 0x7f7204000e44 in do_lxcapi_start /home/runner/work/lxc/lxc/src/lxc/lxccontainer.c:1112:9
    #7 0x7f7203ff0c07 in lxcapi_start /home/runner/work/lxc/lxc/src/lxc/lxccontainer.c:1149:8
    #8 0x4c6912 in main /home/runner/work/lxc/lxc/src/lxc/tools/lxc_execute.c:224:9
    #9 0x7f72034ac0b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
    #10 0x41d93d in _start (/usr/bin/lxc-execute+0x41d93d)
+ echo ---

0x6020000009fb is located 0 bytes to the right of 11-byte region [0x6020000009f0,0x6020000009fb)
allocated by thread T0 here:
    #0 0x496399 in realloc (/usr/bin/lxc-execute+0x496399)
    #1 0x7f7203fcf85c in fd_to_buf /home/runner/work/lxc/lxc/src/lxc/file_utils.c:463:10
    #2 0x7f720413a52b in apparmor_process_label_get /home/runner/work/lxc/lxc/src/lxc/lsm/apparmor.c:442:8
    #3 0x7f720413bc2a in apparmor_prepare /home/runner/work/lxc/lxc/src/lxc/lsm/apparmor.c:1104:13
    #4 0x7f720409b6e9 in lxc_init /home/runner/work/lxc/lxc/src/lxc/start.c:848:8
    #5 0x7f72040a395a in __lxc_start /home/runner/work/lxc/lxc/src/lxc/start.c:2009:8
    #6 0x7f7203fc7186 in lxc_execute /home/runner/work/lxc/lxc/src/lxc/execute.c:99:9
    #7 0x7f7204000e44 in do_lxcapi_start /home/runner/work/lxc/lxc/src/lxc/lxccontainer.c:1112:9
    #8 0x7f7203ff0c07 in lxcapi_start /home/runner/work/lxc/lxc/src/lxc/lxccontainer.c:1149:8
    #9 0x4c6912 in main /home/runner/work/lxc/lxc/src/lxc/tools/lxc_execute.c:224:9
```

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agocommands: don't needlessly allocate
Christian Brauner [Sat, 17 Apr 2021 15:46:37 +0000 (17:46 +0200)] 
commands: don't needlessly allocate

Fixes: #3796
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoprocess_utils: free stack after return
Christian Brauner [Thu, 15 Apr 2021 12:11:56 +0000 (14:11 +0200)] 
process_utils: free stack after return

Fixes: #3789
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoconfigure: fix sanitizer compilation
Christian Brauner [Thu, 15 Apr 2021 12:11:26 +0000 (14:11 +0200)] 
configure: fix sanitizer compilation

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agoerror_utils: add missing macro.h include
Christian Brauner [Sat, 17 Apr 2021 15:25:46 +0000 (17:25 +0200)] 
error_utils: add missing macro.h include

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agotests: pass on ASAN/UBSAN options to several tests
Evgeny Vereshchagin [Mon, 12 Apr 2021 01:41:27 +0000 (01:41 +0000)] 
tests: pass on ASAN/UBSAN options to several tests

to make it easier to run them under ASan/UBSan.

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agotests: stop cutting off right square brackets in share_ns
Evgeny Vereshchagin [Sun, 11 Apr 2021 15:02:20 +0000 (15:02 +0000)] 
tests: stop cutting off right square brackets in share_ns

Closes https://github.com/lxc/lxc/issues/3791

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agotests: switch to the "busybox" template in lxc-test-checkpoint-restore
Evgeny Vereshchagin [Sun, 11 Apr 2021 09:49:28 +0000 (09:49 +0000)] 
tests: switch to the "busybox" template in lxc-test-checkpoint-restore

criu can't seem to dump systemd-logind used in Ubuntu due to what appears to be
https://github.com/checkpoint-restore/criu/issues/1430.
Let's switch to busybox where all the processes hopefully can be dumped.

Closes https://github.com/lxc/lxc/issues/3792

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agolxccontainer: fix container creation error paths
Christian Brauner [Wed, 14 Apr 2021 14:12:45 +0000 (16:12 +0200)] 
lxccontainer: fix container creation error paths

Fixes: #3782
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agotests: fix a memory leak in attach
Evgeny Vereshchagin [Sat, 10 Apr 2021 12:31:02 +0000 (12:31 +0000)] 
tests: fix a memory leak in attach

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agotests: fix a memory leak in cgpath
Evgeny Vereshchagin [Sat, 10 Apr 2021 07:36:21 +0000 (07:36 +0000)] 
tests: fix a memory leak in cgpath

```
==131188==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 568 byte(s) in 1 object(s) allocated from:
    #0 0x7f8918943bc8 in malloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10dbc8)
    #1 0x7f89181ee5a3 in lxc_container_new /home/vagrant/lxc/src/lxc/lxccontainer.c:5264
    #2 0x55ffc5022869 in test_container /home/vagrant/lxc/src/tests/cgpath.c:176
    #3 0x55ffc5023023 in main /home/vagrant/lxc/src/tests/cgpath.c:233
    #4 0x7f891709e0b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
```

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agoRevert "confile: make lxc_get_config() and lxc_get_config_net() always return non...
Christian Brauner [Tue, 13 Apr 2021 12:42:15 +0000 (14:42 +0200)] 
Revert "confile: make lxc_get_config() and lxc_get_config_net() always return non-NULL"

This reverts commit 674791ed75c53fb18c5823c5807876bde4865616.

Our stable queue tool somehow still listed this patch as pending when it
had already been applied earlier.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
4 years agotests: fix a memory leak in lxcpath
Evgeny Vereshchagin [Sat, 10 Apr 2021 04:45:46 +0000 (04:45 +0000)] 
tests: fix a memory leak in lxcpath

```
$ sudo ./src/tests/lxc-test-lxcpath

=================================================================
==95911==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 39 byte(s) in 1 object(s) allocated from:
    #0 0x7effafc8d3dd in strdup (/lib/x86_64-linux-gnu/libasan.so.5+0x963dd)
    #1 0x7effaf5a2de6 in lxcapi_config_file_name /home/vagrant/lxc/src/lxc/lxccontainer.c:3190
    #2 0x562961680c30 in main /home/vagrant/lxc/src/tests/lxcpath.c:49
    #3 0x7effae5150b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)

Direct leak of 21 byte(s) in 1 object(s) allocated from:
    #0 0x7effafc8d3dd in strdup (/lib/x86_64-linux-gnu/libasan.so.5+0x963dd)
    #1 0x7effaf5a2de6 in lxcapi_config_file_name /home/vagrant/lxc/src/lxc/lxccontainer.c:3190
    #2 0x56296168115e in main /home/vagrant/lxc/src/tests/lxcpath.c:77
    #3 0x7effae5150b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)

Direct leak of 21 byte(s) in 1 object(s) allocated from:
    #0 0x7effafc8d3dd in strdup (/lib/x86_64-linux-gnu/libasan.so.5+0x963dd)
    #1 0x7effaf5a2de6 in lxcapi_config_file_name /home/vagrant/lxc/src/lxc/lxccontainer.c:3190
    #2 0x562961680f0a in main /home/vagrant/lxc/src/tests/lxcpath.c:63
    #3 0x7effae5150b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)

SUMMARY: AddressSanitizer: 81 byte(s) leaked in 3 allocation(s).
```

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
4 years agotests: fix a memory leak in cgpath
Evgeny Vereshchagin [Sat, 10 Apr 2021 02:09:09 +0000 (02:09 +0000)] 
tests: fix a memory leak in cgpath

```
$ sudo ./src/tests/lxc-test-cgpath
Container creation tests...Passed
Container creation with LXCPATH tests...Passed

=================================================================
==57206==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 296 byte(s) in 1 object(s) allocated from:
    #0 0x7fef22c27dc6 in calloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10ddc6)
    #1 0x557c6e3ce3d9 in cgroup_ops_init cgroups/cgfsng.c:3347
    #2 0x557c6e3d6516 in cgroup_init cgroups/cgroup.c:33
    #3 0x557c6e3788e2 in test_running_container /home/vagrant/lxc/src/tests/cgpath.c:102
    #4 0x557c6e379c69 in test_container /home/vagrant/lxc/src/tests/cgpath.c:197
    #5 0x557c6e379e37 in main /home/vagrant/lxc/src/tests/cgpath.c:233
    #6 0x7fef2136c0b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)

Direct leak of 296 byte(s) in 1 object(s) allocated from:
    #0 0x7fef22c27dc6 in calloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10ddc6)
    #1 0x557c6e3ce3d9 in cgroup_ops_init cgroups/cgfsng.c:3347
    #2 0x557c6e3d6516 in cgroup_init cgroups/cgroup.c:33
    #3 0x557c6e3788e2 in test_running_container /home/vagrant/lxc/src/tests/cgpath.c:102
    #4 0x557c6e379c69 in test_container /home/vagrant/lxc/src/tests/cgpath.c:197
    #5 0x557c6e379e61 in main /home/vagrant/lxc/src/tests/cgpath.c:237
    #6 0x7fef2136c0b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
```

Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>