Blob Blame History Raw
 commit d6516ba4c88f217fe14455db92c60cd0e9af18f8
 Author: Sven Schnelle <svens@linux.ibm.com>
 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 <svens@linux.ibm.com>
     Signed-off-by: Simon Horman <horms@verge.net.au>
 
 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)