:: commit 4c09663a286d19eca7bc1f339e58713c0029db34

mintsuki <mintsuki@protonmail.com> — 2020-12-01 02:09

parents: 9b7f9e4209

menu: Fix issue where command line buffer was allocated in conventional memory and subsequently discarded

diff --git a/limine-pxe.bin b/limine-pxe.bin
index c1da2577..ce964849 100644
Binary files a/limine-pxe.bin and b/limine-pxe.bin differ
diff --git a/limine.bin b/limine.bin
index 04af2add..d733c71e 100644
Binary files a/limine.bin and b/limine.bin differ
diff --git a/stage2.map b/stage2.map
index 6aa7fcf3..29a91ec2 100644
Binary files a/stage2.map and b/stage2.map differ
diff --git a/stage2/menu.c b/stage2/menu.c
index 586936b8..103a4b4d 100644
--- a/stage2/menu.c
+++ b/stage2/menu.c
@@ -37,9 +37,6 @@ static void cursor_fwd(void) {
     set_cursor_pos(x, y);
 }
 
-static char *cmdline;
-#define CMDLINE_MAX 1024
-
 #define EDITOR_MAX_BUFFER_SIZE 4096
 
 static size_t get_line_offset(size_t *displacement, size_t index, const char *buffer) {
@@ -241,9 +238,7 @@ static int print_tree(int level, int base_index, int selected_entry,
     return max_entries;
 }
 
-char *menu(char **cmdline_ret) {
-    cmdline = conv_mem_alloc(CMDLINE_MAX);
-
+char *menu(char **cmdline) {
     struct menu_entry *selected_menu_entry;
 
     int selected_entry = 0;
@@ -380,15 +375,14 @@ timeout_aborted:
                     goto refresh;
                 }
                 enable_cursor();
-                cmdline = config_get_value(selected_menu_entry->body, 0, "KERNEL_CMDLINE");
-                if (!cmdline) {
-                    cmdline = config_get_value(selected_menu_entry->body, 0, "CMDLINE");
+                *cmdline = config_get_value(selected_menu_entry->body, 0, "KERNEL_CMDLINE");
+                if (!*cmdline) {
+                    *cmdline = config_get_value(selected_menu_entry->body, 0, "CMDLINE");
                 }
-                if (!cmdline) {
-                    cmdline[0] = '\0';
+                if (!*cmdline) {
+                    *cmdline = "";
                 }
                 clear(true);
-                *cmdline_ret = cmdline;
                 term_double_buffer(false);
                 return selected_menu_entry->body;
             case 'e': {
tab: 248 wrap: offon