1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-26 02:05:08 +00:00

Kernel: Copy command line to a safe place

This avoids kmalloc overwriting it because it may be within the
kmalloc or eternal pool.
This commit is contained in:
Tom 2020-08-24 19:35:27 -06:00 committed by Andreas Kling
parent d89582880e
commit 81780e607d
3 changed files with 22 additions and 4 deletions

View file

@ -25,21 +25,34 @@
*/
#include <Kernel/CommandLine.h>
#include <Kernel/StdLib.h>
namespace Kernel {
static char s_cmd_line[1024];
static CommandLine* s_the;
void CommandLine::early_initialize(const char* cmd_line)
{
if (!cmd_line)
return;
size_t length = strlen(cmd_line);
if (length >= sizeof(s_cmd_line))
length = sizeof(s_cmd_line) -1;
memcpy(s_cmd_line, cmd_line, length);
s_cmd_line[length] = '\0';
}
const CommandLine& kernel_command_line()
{
ASSERT(s_the);
return *s_the;
}
void CommandLine::initialize(const String& string)
void CommandLine::initialize()
{
ASSERT(!s_the);
s_the = new CommandLine(string);
s_the = new CommandLine(s_cmd_line);
}
CommandLine::CommandLine(const String& string)