commit d6516ba4c88f217fe14455db92c60cd0e9af18f8 Author: Sven Schnelle Date: Thu Dec 16 12:43:55 2021 +0100 use slurp_proc_file() in get_command_line() This way the size of the command line that get_command_line() can handle is no longer fixed. Signed-off-by: Sven Schnelle Signed-off-by: Simon Horman diff --git a/kexec/kexec.c b/kexec/kexec.c index f3adac517161d448552a16fd79488c1df100d356..7e4787bc821107b7af66ebdbcfc31f4e7e1d48cd 100644 --- a/kexec/kexec.c +++ b/kexec/kexec.c @@ -1172,25 +1172,19 @@ static char *slurp_proc_file(const char *filename, size_t *len) */ char *get_command_line(void) { - FILE *fp; - char *line; - const int sizeof_line = 2048; - - line = malloc(sizeof_line); - if (line == NULL) - die("Could not allocate memory to read /proc/cmdline."); - - fp = fopen("/proc/cmdline", "r"); - if (!fp) - die("Could not open /proc/cmdline."); - - if (fgets(line, sizeof_line, fp) == NULL) - die("Can't read /proc/cmdline."); + char *p, *line; + size_t size; - fclose(fp); + line = slurp_proc_file("/proc/cmdline", &size); + if (!line || !size) + die("Failed to read /proc/cmdline\n"); /* strip newline */ - line[strlen(line) - 1] = '\0'; + line[size-1] = '\0'; + + p = strpbrk(line, "\r\n"); + if (p) + *p = '\0'; remove_parameter(line, "BOOT_IMAGE"); if (kexec_flags & KEXEC_ON_CRASH)