This way the size of the command line that get_command_line() can handle
is no longer fixed.

Signed-off-by: Sven Schnelle <[email protected]>
---
 kexec/kexec.c | 26 ++++++++++----------------
 1 file changed, 10 insertions(+), 16 deletions(-)

diff --git a/kexec/kexec.c b/kexec/kexec.c
index a1acba2adf2a..e2c58de48565 100644
--- a/kexec/kexec.c
+++ b/kexec/kexec.c
@@ -1153,25 +1153,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)
-- 
2.32.0


_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

Reply via email to