Kernel: Fix KParams parsing with trailing space in kernel cmdline

When there's a trailing space in the cmdline from the boot loader, this
results in an empty string being emitted from `String::split` after
splitting apart the argument list. This empty string resulted in a
zero-length Vector from the subsequent call to split the key=value pairs,
which was unexpected. This ultimately caused a crash when we tried to
access `[0]` of that zero-length vector.

We now detect and handle an empty string coming from `String::split`
correctly.
This commit is contained in:
Conrad Pankoff 2019-06-04 21:55:52 +10:00 committed by Andreas Kling
parent 419e886497
commit d7734bf232
Notes: sideshowbarker 2024-07-19 13:44:39 +09:00

View File

@ -13,6 +13,10 @@ KParams::KParams(const String& cmdline)
s_the = this; s_the = this;
for (auto str : m_cmdline.split(' ')) { for (auto str : m_cmdline.split(' ')) {
if (str == "") {
continue;
}
auto pair = str.split_limit('=', 2); auto pair = str.split_limit('=', 2);
if (pair.size() == 1) { if (pair.size() == 1) {