mirror of
https://github.com/systemd/systemd
synced 2024-07-22 10:44:58 +00:00
proc-cmdline: parse the whole /proc/cmdline
The kernel command line may contain newlines which kernel happily accepts, but we'd ignore everything past the first newline. Let's fix that by replacing read_one_line_file() with read_full_file().
This commit is contained in:
parent
0f85a0d38f
commit
d5a937a62a
|
@ -98,7 +98,7 @@ int proc_cmdline(char **ret) {
|
|||
if (detect_container() > 0)
|
||||
return get_process_cmdline(1, SIZE_MAX, 0, ret);
|
||||
else
|
||||
return read_one_line_file("/proc/cmdline", ret);
|
||||
return read_full_file("/proc/cmdline", ret, NULL);
|
||||
}
|
||||
|
||||
static int proc_cmdline_strv_internal(char ***ret, bool filter_pid1_args) {
|
||||
|
@ -128,7 +128,7 @@ static int proc_cmdline_strv_internal(char ***ret, bool filter_pid1_args) {
|
|||
} else {
|
||||
_cleanup_free_ char *s = NULL;
|
||||
|
||||
r = read_one_line_file("/proc/cmdline", &s);
|
||||
r = read_full_file("/proc/cmdline", &s, NULL);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
|
|
@ -14,6 +14,9 @@ KERNEL_APPEND="
|
|||
|
||||
frobnicate!
|
||||
|
||||
systemd.setenv=TEST_CMDLINE_NEWLINE=foo
|
||||
systemd.setenv=TEST_CMDLINE_NEWLINE=bar
|
||||
|
||||
$KERNEL_APPEND
|
||||
"
|
||||
|
||||
|
|
|
@ -3,6 +3,12 @@
|
|||
set -eux
|
||||
set -o pipefail
|
||||
|
||||
if ! systemd-detect-virt -qc && [[ "${TEST_CMDLINE_NEWLINE:-}" != bar ]]; then
|
||||
cat /proc/cmdline
|
||||
echo >&2 "Expected TEST_CMDLINE_NEWLINE=bar from the kernel command line"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
NPROC=$(nproc)
|
||||
MAX_QUEUE_SIZE=${NPROC:-2}
|
||||
TESTS_GLOB=${TESTS_GLOB:-test-*}
|
||||
|
|
Loading…
Reference in a new issue