:: commit 89df8597a1b3ab5160a26a7b5b740b6e9f307338

Mintsuki <mintsuki@protonmail.com> — 2026-01-13 04:54

parents: 9659672e09

limine: Fix internal module path corruption from static URI buffer

diff --git a/common/protos/limine.c b/common/protos/limine.c
index f6f05c18..0dd44d3f 100644
--- a/common/protos/limine.c
+++ b/common/protos/limine.c
@@ -443,6 +443,10 @@ noreturn void limine_load(char *config, char *cmdline) {
     strcpy(k_path_copy, kernel_path);
     char *k_resource = NULL, *k_root = NULL, *k_path = NULL, *k_hash = NULL;
     uri_resolve(k_path_copy, &k_resource, &k_root, &k_path, &k_hash);
+    // Copy k_resource and k_root since uri_resolve returns pointers to a static
+    // buffer that gets overwritten by subsequent uri_open/uri_resolve calls
+    k_resource = strdup(k_resource);
+    k_root = strdup(k_root);
     char *k_path_ = ext_mem_alloc(strlen(k_path) + 2);
     k_path_[0] = '/';
     strcpy(k_path_ + 1, k_path);
tab: 248 wrap: offon