]>
git.ipfire.org Git - thirdparty/lxc.git/log
Christian Brauner [Mon, 12 Apr 2021 15:50:39 +0000 (17:50 +0200)]
Revert "rexec: mark all fds as close-on-exec if possible"
This reverts commit
531d36ad009325b74a105d9d6956e320f37b2937 .
Callers might want to explicilty inhert file descriptors so we can't
close them behind their back when we exec.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Mon, 12 Apr 2021 15:23:24 +0000 (17:23 +0200)]
attach: don't return early when calculating namespaces via pidfd
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Stéphane Graber [Mon, 12 Apr 2021 13:28:50 +0000 (09:28 -0400)]
Merge pull request #3778 from brauner/2021-04-12/fixes
conf: idmaptool fixes
Christian Brauner [Mon, 12 Apr 2021 07:47:59 +0000 (09:47 +0200)]
conf: don't report success when idmaptools lack all privilege
Fixes: #3777
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Mon, 12 Apr 2021 07:44:40 +0000 (09:44 +0200)]
conf: simplify idmaptool_on_path_and_privileged()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Stéphane Graber [Wed, 7 Apr 2021 16:06:02 +0000 (12:06 -0400)]
Merge pull request #3775 from brauner/2021-04-07/fixes
confile: make lxc_get_config() and lxc_get_config_net() always return…
Christian Brauner [Wed, 7 Apr 2021 14:51:31 +0000 (16:51 +0200)]
confile: make lxc_get_config() and lxc_get_config_net() always return non-NULL
Introduce the concept of an unsupported config item.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Wed, 7 Apr 2021 14:34:52 +0000 (16:34 +0200)]
Merge pull request #3774 from stgraber/master
github: Try to fix action naming
Stéphane Graber [Wed, 7 Apr 2021 14:34:02 +0000 (10:34 -0400)]
github: Try to fix action naming
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Stéphane Graber [Wed, 7 Apr 2021 12:04:51 +0000 (08:04 -0400)]
Merge pull request #3773 from brauner/2021-04-06/fixes_2
confile & log: fixes
Christian Brauner [Tue, 6 Apr 2021 15:23:50 +0000 (17:23 +0200)]
confile: enforce maximum subkey length
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Tue, 6 Apr 2021 15:22:52 +0000 (17:22 +0200)]
log: add error_ret()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Tue, 6 Apr 2021 15:10:49 +0000 (17:10 +0200)]
macro: ensure ret_errno() always returns negative
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Wed, 7 Apr 2021 07:33:59 +0000 (09:33 +0200)]
Merge pull request #3763 from evverx/fuzz-lxc-define-load
oss-fuzz: fuzz lxc_config_define_add and lxc_config_define_load
Stéphane Graber [Tue, 6 Apr 2021 14:43:59 +0000 (10:43 -0400)]
Merge pull request #3772 from merlin1991/master
templates/*.in: fixed PATH handling with spaces
Christian Ratzenhofer [Tue, 6 Apr 2021 12:39:11 +0000 (14:39 +0200)]
templates/*.in: fixed PATH handling with spaces
if $PATH already contains a path with a space the append of the
default directories in all template scripts fails with an error
like the following:
/usr/share/lxc/templates/lxc-download: 69: export: (x86)/NVIDIA: bad
variable name
Signed-off-by: Christian Ratzenhofer <christian.ratzenhofer@cdnm.at>
Stéphane Graber [Tue, 6 Apr 2021 12:18:32 +0000 (08:18 -0400)]
Merge pull request #3771 from brauner/2021-04-06/fixes
conf: fix setups where /dev is outside of LXC's control
Christian Brauner [Tue, 6 Apr 2021 08:34:31 +0000 (10:34 +0200)]
log: ensure we always return negative errno
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Tue, 6 Apr 2021 08:30:38 +0000 (10:30 +0200)]
conf: fix setups where /dev is outside of LXC's control
Fixes: #3770
Suggested-by: Ruben Jenster <r.jenster@drachenfels.de>
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Stéphane Graber [Fri, 2 Apr 2021 16:03:41 +0000 (12:03 -0400)]
Merge pull request #3766 from brauner/2021-04-02/fixes_2
lsm: fixes
Christian Brauner [Fri, 2 Apr 2021 14:17:25 +0000 (16:17 +0200)]
confile: complain when LXC is built without AppArmor support
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 2 Apr 2021 14:15:22 +0000 (16:15 +0200)]
confile: complain when LXC is built without selinux support
Link: https://github.com/lxc/lxc/issues/3765
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Stéphane Graber [Fri, 2 Apr 2021 12:47:53 +0000 (08:47 -0400)]
Merge pull request #3764 from brauner/2021-04-02/fixes
confile: fix lxc.namespace.share.[identifier]
Christian Brauner [Fri, 2 Apr 2021 10:04:22 +0000 (12:04 +0200)]
confile: fix lxc.namespace.share.[identifier]
Link: https://github.com/lxc/lxc/pull/3763/files#r606089660
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Stéphane Graber [Thu, 1 Apr 2021 12:39:43 +0000 (08:39 -0400)]
Merge pull request #3762 from brauner/2021-03-31/fixes
fixes: Makefile, lxc-user-nic, simplify get_network_config_ops()
Christian Brauner [Thu, 1 Apr 2021 08:07:59 +0000 (10:07 +0200)]
confile: simplify get_network_config_ops()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Thu, 1 Apr 2021 07:30:08 +0000 (09:30 +0200)]
string_utils: use restrict for lxc_safe_int64_residual()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Thu, 1 Apr 2021 08:56:52 +0000 (10:56 +0200)]
string_utils: ensure that errno is set on return
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Thu, 1 Apr 2021 07:16:14 +0000 (09:16 +0200)]
string_utils: move to lxc-copy() sources
It's the only place where it is still used.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Wed, 31 Mar 2021 13:59:54 +0000 (15:59 +0200)]
lxc_user_nic: cleanup get_alloted()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Wed, 31 Mar 2021 13:59:34 +0000 (15:59 +0200)]
lxc_user_nic: cleanup append_alloted()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Thu, 1 Apr 2021 06:01:59 +0000 (08:01 +0200)]
Merge pull request #3760 from evverx/reject-giant-configs
oss-fuzz: reject giant configs early
Evgeny Vereshchagin [Wed, 31 Mar 2021 09:48:19 +0000 (09:48 +0000)]
cifuzz: fuzz longer
Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
Evgeny Vereshchagin [Wed, 31 Mar 2021 09:35:57 +0000 (09:35 +0000)]
confile: fix a memory leak lxc_config_define_add
```
2021-04-02T05:45:54.9410345Z ==13==ERROR: LeakSanitizer: detected memory leaks
2021-04-02T05:45:54.9410737Z
2021-04-02T05:45:54.9411488Z Direct leak of 16 byte(s) in 1 object(s) allocated from:
2021-04-02T05:45:54.9412556Z #0 0x54d752 in calloc /src/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:154:3
2021-04-02T05:45:54.9413360Z #1 0x583795 in parse_new_conf_line /src/lxc/src/lxc/confile.c:3048:8
2021-04-02T05:45:54.9414057Z #2 0x582f1a in lxc_config_define_add /src/lxc/src/lxc/confile.c:3090:15
2021-04-02T05:45:54.9415352Z #3 0x5810fa in LLVMFuzzerTestOneInput /src/lxc/src/tests/fuzz-lxc-define-load.c:30:6
2021-04-02T05:45:54.9419212Z #4 0x483b93 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:599:15
2021-04-02T05:45:54.9421819Z #5 0x48309a in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool, bool*) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:505:3
2021-04-02T05:45:54.9424205Z #6 0x485474 in fuzzer::Fuzzer::ReadAndExecuteSeedCorpora(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:814:7
2021-04-02T05:45:54.9426658Z #7 0x485689 in fuzzer::Fuzzer::Loop(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:845:3
2021-04-02T05:45:54.9428616Z #8 0x473717 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:906:6
2021-04-02T05:45:54.9429989Z #9 0x49f572 in main /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerMain.cpp:20:10
2021-04-02T05:45:54.9433312Z #10 0x7fa96041b83f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2083f)
2021-04-02T05:45:54.9433795Z
2021-04-02T05:45:54.9434661Z DEDUP_TOKEN: calloc--parse_new_conf_line--lxc_config_define_add
2021-04-02T05:45:54.9435483Z SUMMARY: AddressSanitizer: 16 byte(s) leaked in 1 allocation(s).
2021-04-02T05:45:54.9435958Z
2021-04-02T05:45:54.9436404Z INFO: a leak has been found in the initial corpus.
```
Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
Evgeny Vereshchagin [Wed, 31 Mar 2021 07:12:51 +0000 (07:12 +0000)]
oss-fuzz: fuzz lxc_config_define_add and lxc_config_define_load
Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
Christian Brauner [Wed, 31 Mar 2021 20:03:07 +0000 (22:03 +0200)]
Merge pull request #3759 from evverx/san-compatible
build-system: make it compatible with ASan/UBsan/Msan
Stéphane Graber [Wed, 31 Mar 2021 17:36:04 +0000 (13:36 -0400)]
Merge pull request #3758 from brauner/2021-03-31/fixes
confile: cap to last bit in set_config_net_ipv4_address()
Christian Brauner [Wed, 31 Mar 2021 08:54:28 +0000 (10:54 +0200)]
confile: cap to last bit in set_config_net_ipv4_address()
Link: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32708
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Tue, 30 Mar 2021 18:50:52 +0000 (20:50 +0200)]
Merge pull request #3755 from evverx/lxc-net
oss-fuzz.sh: put the "lxc.net" keys to the seed corpus as well
Stéphane Graber [Tue, 30 Mar 2021 16:58:28 +0000 (12:58 -0400)]
Merge pull request #3756 from brauner/2021-03-30/fixes_3
string_utils: switch to path_simplify()
Christian Brauner [Tue, 30 Mar 2021 15:20:51 +0000 (17:20 +0200)]
string_utils: switch to path_simplify()
Link: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32689
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Stéphane Graber [Tue, 30 Mar 2021 12:31:41 +0000 (08:31 -0400)]
Merge pull request #3754 from brauner/2021-03-30/fixes_2
confile: don't jump into the global table twice
Christian Brauner [Tue, 30 Mar 2021 08:39:00 +0000 (10:39 +0200)]
confile: don't jump into the global table twice
instead move networking keys into a subtable. This avoids even just the
remote danger of recursion and also speeds up config parsing.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Evgeny Vereshchagin [Tue, 30 Mar 2021 07:26:39 +0000 (07:26 +0000)]
oss-fuzz: reject giant configs early
It should help the fuzzer to avoid running into timeouts
like https://oss-fuzz.com/testcase-detail/
5132999948632064 .
Hopefully, once this is merged OSS-Fuzz will report only
infinite loops as timeouts.
Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
Evgeny Vereshchagin [Tue, 30 Mar 2021 03:31:36 +0000 (03:31 +0000)]
build-system: make it compatible with ASan/UBsan/MSan
Closes: https://github.com/lxc/lxc/issues/3727
Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
Evgeny Vereshchagin [Tue, 30 Mar 2021 04:07:02 +0000 (04:07 +0000)]
ci: enable PAM
to make sure pam_cgfs is buildable with ASan/UBsan too
Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
Evgeny Vereshchagin [Tue, 30 Mar 2021 03:18:11 +0000 (03:18 +0000)]
ci: also build with ASan/UBsan
Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
Evgeny Vereshchagin [Tue, 30 Mar 2021 02:31:09 +0000 (02:31 +0000)]
oss-fuzz.sh: get rid of the sed "no-undefined" kludge
Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
Evgeny Vereshchagin [Tue, 30 Mar 2021 03:11:57 +0000 (03:11 +0000)]
ci: stop passing --enable-ubsan
It's just a follow-up to
5f404236273bb211 (where --enable-ubsan
was removed).
Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
Stéphane Graber [Mon, 29 Mar 2021 17:11:25 +0000 (13:11 -0400)]
Merge pull request #3750 from brauner/2021-03-29/fixes_2
autotools: remove --enable-{asan,ubsan} in favor of --enable-sanitizers
Christian Brauner [Mon, 29 Mar 2021 16:29:57 +0000 (18:29 +0200)]
Merge pull request #3751 from tomponline/tp-nic-ordering
doc: Documented that net type field must come before other options on the net device
Thomas Parrott [Mon, 29 Mar 2021 16:20:42 +0000 (17:20 +0100)]
doc: Documented that net type field must come before other options on the net device
Signed-off-by: Thomas Parrott <thomas.parrott@canonical.com>
Christian Brauner [Mon, 29 Mar 2021 16:03:53 +0000 (18:03 +0200)]
README: remove Travis and add Github actions badge
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Mon, 29 Mar 2021 15:15:32 +0000 (17:15 +0200)]
autotools: remove --enable-{asan,ubsan} in favor of --enable-sanitizers
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Stéphane Graber [Mon, 29 Mar 2021 14:45:46 +0000 (10:45 -0400)]
Merge pull request #3749 from brauner/2021-03-29/fixes
compiler: fix thread_local detection
Christian Brauner [Mon, 29 Mar 2021 14:06:16 +0000 (16:06 +0200)]
Merge pull request #3746 from evverx/CIFuzz-unblock-msan
CIFuzz: turn on MSan
Christian Brauner [Mon, 29 Mar 2021 13:42:54 +0000 (15:42 +0200)]
compiler: fix thread_local detection
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Stéphane Graber [Mon, 29 Mar 2021 12:13:08 +0000 (08:13 -0400)]
Merge pull request #3748 from brauner/2021-03-29/fixes
fixes & config key validation
Evgeny Vereshchagin [Mon, 29 Mar 2021 11:38:38 +0000 (11:38 +0000)]
oss-fuzz.sh: put the "lxc.net" keys in the seed corpus as well
It's just a follow-up to
0abcc213e2291d71 (where the "lxc.net" keys
were moved from config_jump_table to config_jump_table_net)
Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
Christian Brauner [Mon, 29 Mar 2021 11:28:56 +0000 (13:28 +0200)]
lxccontainer: ensure second parameter to bsearch is never NULL
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Mon, 29 Mar 2021 10:49:51 +0000 (12:49 +0200)]
conf: fix thread_local support detection
Our detection for TLS wasn't working. Fix it.
Fixes: https://github.com/lxc/lxd/issues/8327
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Mon, 29 Mar 2021 10:34:33 +0000 (12:34 +0200)]
tests: add another test for garbage config key
where a valid key has trailing garbage at the end before the "=".
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Mon, 29 Mar 2021 10:33:33 +0000 (12:33 +0200)]
tests: fix two false negatives in parse_config_file()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Mon, 29 Mar 2021 10:16:23 +0000 (12:16 +0200)]
confile: cleanup set_config_net_script_down()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Mon, 29 Mar 2021 10:15:58 +0000 (12:15 +0200)]
confile: cleanup set_config_net_script_up()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Mon, 29 Mar 2021 10:15:43 +0000 (12:15 +0200)]
confile: cleanup set_config_net_mtu()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Mon, 29 Mar 2021 10:13:43 +0000 (12:13 +0200)]
confile: cleanup set_config_net_hwaddr()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Mon, 29 Mar 2021 10:01:49 +0000 (12:01 +0200)]
confile: clear netdev on network type change
Link: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32584
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Mon, 29 Mar 2021 08:19:30 +0000 (10:19 +0200)]
confile: vet keys more aggressively
Enforce an exact match for all keys where we now the subkeys must match
exactly.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Sun, 28 Mar 2021 15:58:18 +0000 (17:58 +0200)]
confile: safely clean previous value in set_config_net_ipv4_gateway()
Link: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32586
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Sun, 28 Mar 2021 15:54:26 +0000 (17:54 +0200)]
confile: safely clean previous value in set_config_net_ipv6_gateway()
Link: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32610
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Sun, 28 Mar 2021 21:16:45 +0000 (23:16 +0200)]
Merge pull request #3745 from evverx/ubsan-msan-support
oss-fuzz/cifuzz: a couple of follow-up commits
Christian Brauner [Sun, 28 Mar 2021 17:20:49 +0000 (19:20 +0200)]
Merge pull request #3744 from evverx/oss-fuzz-32596
confile_utils: fix a signed integer overflow
Stéphane Graber [Sun, 28 Mar 2021 16:35:16 +0000 (12:35 -0400)]
Merge pull request #3743 from brauner/2021-03-27/fixes_3
oss-fuzz: fixes
Evgeny Vereshchagin [Sun, 28 Mar 2021 08:54:17 +0000 (08:54 +0000)]
string_utils: work around an MSan false positive
MSan doesn't instrument stpncpy (https://github.com/google/sanitizers/issues/926),
which causes the fuzzer to fail with:
```
$ cat ../minimized-from-
740f56329efc60eab59b8194132b712a873e88a3
lxc.console.size=123
$ ./out/fuzz-lxc-config-read ../minimized-from-
740f56329efc60eab59b8194132b712a873e88a3
INFO: Seed:
3561494591
INFO: Loaded 1 modules (18795 inline 8-bit counters): 18795 [0x866b98, 0x86b503),
INFO: Loaded 1 PC tables (18795 PCs): 18795 [0x86b508,0x8b4bb8),
./out/fuzz-lxc-config-read: Running 1 inputs 1 time(s) each.
Running: ../minimized-from-
740f56329efc60eab59b8194132b712a873e88a3
==850885==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x6b3e7f in parse_byte_size_string /home/vagrant/lxc/src/lxc/string_utils.c:912:6
#1 0x550991 in set_config_console_size /home/vagrant/lxc/src/lxc/confile.c:2483:8
#2 0x5346e2 in parse_line /home/vagrant/lxc/src/lxc/confile.c:2962:9
#3 0x64b3cd in lxc_file_for_each_line_mmap /home/vagrant/lxc/src/lxc/parse.c:125:9
#4 0x53340c in lxc_config_read /home/vagrant/lxc/src/lxc/confile.c:3039:9
#5 0x4e7ec2 in LLVMFuzzerTestOneInput /home/vagrant/lxc/src/tests/fuzz-lxc-config-read.c:23:2
#6 0x44ad2c in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) (/home/vagrant/lxc/out/fuzz-lxc-config-read+0x44ad2c)
#7 0x42ca4d in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) (/home/vagrant/lxc/out/fuzz-lxc-config-read+0x42ca4d)
#8 0x433af0 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) (/home/vagrant/lxc/out/fuzz-lxc-config-read+0x433af0)
#9 0x423ff6 in main (/home/vagrant/lxc/out/fuzz-lxc-config-read+0x423ff6)
#10 0x7f79bdc89081 in __libc_start_main (/lib64/libc.so.6+0x27081)
#11 0x42402d in _start (/home/vagrant/lxc/out/fuzz-lxc-config-read+0x42402d)
Uninitialized value was created by an allocation of 'dup' in the stack frame of function 'parse_byte_size_string'
#0 0x6b3330 in parse_byte_size_string /home/vagrant/lxc/src/lxc/string_utils.c:901
SUMMARY: MemorySanitizer: use-of-uninitialized-value /home/vagrant/lxc/src/lxc/string_utils.c:912:6 in parse_byte_size_string
Exiting
```
Closes https://oss-fuzz.com/testcase-detail/
5829890470445056
Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
Evgeny Vereshchagin [Sun, 28 Mar 2021 16:01:00 +0000 (16:01 +0000)]
cifuzz: turn on MSan
Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
Christian Brauner [Sat, 27 Mar 2021 20:14:02 +0000 (21:14 +0100)]
string_utils: handle overflow correct in parse_byte_size_string()
This takes the overflow handling code from the kernel.
Link: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32549
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Evgeny Vereshchagin [Sun, 28 Mar 2021 06:53:44 +0000 (06:53 +0000)]
cifuzz: turn on UBsan
Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
Evgeny Vereshchagin [Sun, 28 Mar 2021 06:42:54 +0000 (06:42 +0000)]
oss-fuzz.sh: take SANITIZER into account
to make it possible to build the fuzzer with UBSan and MSan locally
```
$ SANITIZER=undefined ./src/tests/oss-fuzz.sh
$ printf 'lxc.signal.stop=sigrtmax-
020000000020 ' >oss-fuzz-32596
$ UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1 ./out/fuzz-lxc-config-read oss-fuzz-32596
INFO: Seed:
595864277
INFO: Loaded 1 modules (61553 inline 8-bit counters): 61553 [0x80a1b0, 0x819221),
INFO: Loaded 1 PC tables (61553 PCs): 61553 [0x819228,0x909938),
./out/fuzz-lxc-config-read: Running 1 inputs 1 time(s) each.
Running: oss-fuzz-32596
confile_utils.c:1051:20: runtime error: signed integer overflow: 64 - -
2147483632 cannot be represented in type 'int'
#0 0x51799a in rt_sig_num /home/vagrant/lxc/src/lxc/confile_utils.c:1051:20
#1 0x517268 in sig_parse /home/vagrant/lxc/src/lxc/confile_utils.c:1069:11
#2 0x500ca4 in set_config_signal_stop /home/vagrant/lxc/src/lxc/confile.c:1738:10
#3 0x4b8c7c in parse_line /home/vagrant/lxc/src/lxc/confile.c:2962:9
#4 0x5a5eb0 in lxc_file_for_each_line_mmap /home/vagrant/lxc/src/lxc/parse.c:125:9
```
Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
Evgeny Vereshchagin [Sun, 28 Mar 2021 05:29:43 +0000 (05:29 +0000)]
confile_utils: fix a signed integer overflow
This was triggered by the following chain of conversions:
lxc_safe_uint("
020000000020 ") ->
2147483664 (uint)
sig_num(
2147483664 (uint)) -> -
2147483632 (int)
64 - -
2147483632 cannot be represented in type 'int'
Closes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32596
Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
Christian Brauner [Sat, 27 Mar 2021 19:59:15 +0000 (20:59 +0100)]
confile: don't leak memory in case multiple shmounts are set
Link: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32503
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Sat, 27 Mar 2021 19:49:19 +0000 (20:49 +0100)]
confile: add missing prefix validation
Link: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32488
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Stéphane Graber [Sat, 27 Mar 2021 18:32:51 +0000 (14:32 -0400)]
Merge pull request #3741 from brauner/2021-03-27/fixes_2
confile_utils: free list during lxc_remove_nic_by_idx()
Christian Brauner [Sat, 27 Mar 2021 17:42:24 +0000 (18:42 +0100)]
confile_utils: free list during lxc_remove_nic_by_idx()
Reported-by: Evgeny Vereshchagin <evvers@ya.ru>
Link: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32484
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Stéphane Graber [Sat, 27 Mar 2021 15:48:18 +0000 (11:48 -0400)]
Merge pull request #3739 from brauner/2021-03-27/fixes
oss-fuzz: fixes
Evgeny Vereshchagin [Sat, 27 Mar 2021 11:25:10 +0000 (11:25 +0000)]
ci: turn on ASan on CIFuzz
Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
Christian Brauner [Sat, 27 Mar 2021 13:31:50 +0000 (14:31 +0100)]
confile: prevent recursion when parsing networks
Link: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32558
Link: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32484
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Evgeny Vereshchagin [Sat, 27 Mar 2021 10:58:29 +0000 (10:58 +0000)]
confile: fix a memory leak in set_config_net_hwaddr
It was found by ClusterFuzz in https://oss-fuzz.com/testcase-detail/
4747480244813824
but hasn't been reported on Monorail
(https://bugs.chromium.org/p/oss-fuzz/) yet
```
$ cat minimized-from-
1a18983c13ce64e8a3bd0f699a97d25beb21481e
lxc.net.0.hwaddr=0
lxc.net.0.hwaddr=4
./out/fuzz-lxc-config-read minimized-from-
1a18983c13ce64e8a3bd0f699a97d25beb21481e
INFO: Seed:
1473396311
INFO: Loaded 1 modules (18821 inline 8-bit counters): 18821 [0x885fa0, 0x88a925),
INFO: Loaded 1 PC tables (18821 PCs): 18821 [0x88a928,0x8d4178),
./out/fuzz-lxc-config-read: Running 1 inputs 1 time(s) each.
Running: minimized-from-
1a18983c13ce64e8a3bd0f699a97d25beb21481e
=================================================================
==226185==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 2 byte(s) in 1 object(s) allocated from:
#0 0x4d25d7 in strdup (/home/vagrant/lxc/out/fuzz-lxc-config-read+0x4d25d7)
#1 0x58e48f in set_config_net_hwaddr /home/vagrant/lxc/src/lxc/confile.c:654:14
#2 0x59af3b in set_config_net_nic /home/vagrant/lxc/src/lxc/confile.c:5276:9
#3 0x571c29 in parse_line /home/vagrant/lxc/src/lxc/confile.c:2958:9
#4 0x61b0b2 in lxc_file_for_each_line_mmap /home/vagrant/lxc/src/lxc/parse.c:125:9
#5 0x5710ed in lxc_config_read /home/vagrant/lxc/src/lxc/confile.c:3035:9
#6 0x542cd6 in LLVMFuzzerTestOneInput /home/vagrant/lxc/src/tests/fuzz-lxc-config-read.c:23:2
#7 0x449e8c in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) (/home/vagrant/lxc/out/fuzz-lxc-config-read+0x449e8c)
#8 0x42bbad in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) (/home/vagrant/lxc/out/fuzz-lxc-config-read+0x42bbad)
#9 0x432c50 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) (/home/vagrant/lxc/out/fuzz-lxc-config-read+0x432c50)
#10 0x423136 in main (/home/vagrant/lxc/out/fuzz-lxc-config-read+0x423136)
#11 0x7f2cbb992081 in __libc_start_main (/lib64/libc.so.6+0x27081)
SUMMARY: AddressSanitizer: 2 byte(s) leaked in 1 allocation(s).
```
Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
Christian Brauner [Sat, 27 Mar 2021 10:37:26 +0000 (11:37 +0100)]
confile: improve network vetting
Move all input sanity checks up and add two missing checks for the
correct network type when using veth-vlan and vlan network types.
Link: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32513
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Sat, 27 Mar 2021 07:09:56 +0000 (08:09 +0100)]
confile: use correct check for too large network lists
Link: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32558
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Sat, 27 Mar 2021 07:09:09 +0000 (08:09 +0100)]
confile: make string calculations in get_network_config_ops() more obvious
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Sat, 27 Mar 2021 06:56:22 +0000 (07:56 +0100)]
conf: coding style cleanups
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Sat, 27 Mar 2021 06:52:33 +0000 (07:52 +0100)]
confile_utils: free network list items
Link: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32484
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Sat, 27 Mar 2021 06:51:01 +0000 (07:51 +0100)]
conf: reinitialize lists
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Sat, 27 Mar 2021 06:14:56 +0000 (07:14 +0100)]
string_utils: always memset buf in lxc_safe_int64_residual()
Link: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32482
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Stéphane Graber [Fri, 26 Mar 2021 22:22:30 +0000 (18:22 -0400)]
Merge pull request #3738 from brauner/2021-03-26/fixes_3
oss-fuzz: fixes
Christian Brauner [Fri, 26 Mar 2021 22:02:59 +0000 (23:02 +0100)]
confile: fix returns in set_config_net_veth_vlan_tagged_id()
Link: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32494
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 26 Mar 2021 21:47:55 +0000 (22:47 +0100)]
confile: fix setting prlimits
Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32532
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Christian Brauner [Fri, 26 Mar 2021 21:42:28 +0000 (22:42 +0100)]
conf: don't leak list
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Stéphane Graber [Fri, 26 Mar 2021 21:52:57 +0000 (17:52 -0400)]
Merge pull request #3736 from brauner/2021-03-26/fixes_3
oss-fuzz: fixes