Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package limine for openSUSE:Factory checked 
in at 2026-01-06 17:45:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/limine (Old)
 and      /work/SRC/openSUSE:Factory/.limine.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "limine"

Tue Jan  6 17:45:02 2026 rev:30 rq:1325467 version:10.6.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/limine/limine.changes    2025-12-29 
15:18:07.002246516 +0100
+++ /work/SRC/openSUSE:Factory/.limine.new.1928/limine.changes  2026-01-06 
17:46:29.906351256 +0100
@@ -1,0 +2,25 @@
+Mon Jan  5 18:01:05 UTC 2026 - Marvin Friedrich <[email protected]>
+
+- Update to 10.6.1:
+  * Fix an issue where there were no bound checks when pressing the
+    delete key in the menu entry editor, sometimes causing out-of-bounds
+    accesses.
+  * Add many checks for return values of disk-related functions that
+    could fail.
+  * Fix a typo in the physical memory manager code where a pointer was
+    checked instead of the value it was pointing to. This could have in
+    theory caused 0-length usable memory entries to appear in the memory
+    map.
+  * Add checks to avoid division by 0 if the user-specified baud rate is
+    0.
+  * Fix broken calculation in the fb_clear() function that caused severe
+    out-of-bounds writes when the bits-per-pixel were not 32 or 16.
+  * Fix potential unaligned memory accesses in the BLAKE2B code. This
+    could have caused issues on RISC architectures like aarch64 or
+    riscv64.
+  * Fix missing continues in the riscv ISA string initialisation logic.
+    This could have caused HARTs with invalid ISA strings to be used
+    anyways instead of being ignored.
+  * More minor bug fixes for bugs discovered during static analysis.
+
+-------------------------------------------------------------------

Old:
----
  limine-10.6.0.tar.gz

New:
----
  limine-10.6.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ limine.spec ++++++
--- /var/tmp/diff_new_pack.6BWbr8/_old  2026-01-06 17:46:30.562378237 +0100
+++ /var/tmp/diff_new_pack.6BWbr8/_new  2026-01-06 17:46:30.562378237 +0100
@@ -15,7 +15,7 @@
 #
 
 Name:           limine
-Version:        10.6.0
+Version:        10.6.1
 Release:        0
 Summary:        Modern, advanced, portable, multiprotocol bootloader and boot 
manager
 License:        BSD-2-Clause

++++++ limine-10.6.0.tar.gz -> limine-10.6.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/COPYING new/limine-10.6.1/COPYING
--- old/limine-10.6.0/COPYING   2025-12-28 15:18:08.000000000 +0100
+++ new/limine-10.6.1/COPYING   2026-01-05 07:03:43.000000000 +0100
@@ -1,4 +1,4 @@
-Copyright (C) 2019-2025 Mintsuki and contributors.
+Copyright (C) 2019-2026 Mintsuki and contributors.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are met:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/ChangeLog new/limine-10.6.1/ChangeLog
--- old/limine-10.6.0/ChangeLog 2025-12-28 15:18:08.000000000 +0100
+++ new/limine-10.6.1/ChangeLog 2026-01-05 07:03:43.000000000 +0100
@@ -1,3 +1,35 @@
+2026-01-05  Mintsuki  <[email protected]>
+
+    *** Release 10.6.1 ***
+
+    Noteworthy changes compared to the previous release, 10.6.0:
+
+    Bug fixes:
+        - Fix an issue where there were no bound checks when pressing the
+          delete key in the menu entry editor, sometimes causing out-of-bounds
+          accesses.
+        - Add many checks for return values of disk-related functions that
+          could fail.
+        - Fix a typo in the physical memory manager code where a pointer was
+          checked instead of the value it was pointing to. This could have in
+          theory caused 0-length usable memory entries to appear in the memory
+          map.
+        - Add checks to avoid division by 0 if the user-specified baud rate is
+          0.
+        - Fix broken calculation in the fb_clear() function that caused severe
+          out-of-bounds writes when the bits-per-pixel were not 32 or 16.
+        - Fix potential unaligned memory accesses in the BLAKE2B code. This
+          could have caused issues on RISC architectures like aarch64 or
+          riscv64.
+        - Fix missing continues in the riscv ISA string initialisation logic.
+          This could have caused HARTs with invalid ISA strings to be used
+          anyways instead of being ignored.
+        - More minor bug fixes for bugs discovered during static analysis.
+
+    Miscellaneous:
+        - Use C versions of mem*() functions instead of assembly versions for
+          x86 and x86-64.
+
 2025-12-28  Mintsuki  <[email protected]>
 
     *** Release 10.6.0 ***
@@ -19,7 +51,7 @@
           size. This avoids potential panics from the filesystem driver, and it
           instead just prints a warning and falls back to using the default
           font.
-    
+
     Miscellaneous:
         - Update description of the `term_font_size` and `term_font_spacing`
           configuration options in CONFIG.md.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/bootstrap new/limine-10.6.1/bootstrap
--- old/limine-10.6.0/bootstrap 2025-12-28 15:18:08.000000000 +0100
+++ new/limine-10.6.1/bootstrap 2026-01-05 07:03:43.000000000 +0100
@@ -73,7 +73,7 @@
     clone_repo_commit \
         https://codeberg.org/OSDev/freestnd-c-hdrs-0bsd.git \
         freestnd-c-hdrs \
-        5df91dd7062ad0c54f5ffd86193bb9f008677631
+        097259a899d30f0a4b7a694de2de5fdda942e923
 
     clone_repo_commit \
         https://codeberg.org/OSDev/cc-runtime.git \
@@ -85,12 +85,12 @@
     clone_repo_commit \
         https://codeberg.org/Limine/limine-protocol.git \
         limine-protocol \
-        8a888d7ab3b274fad1a357a922e799fc2ff20729
+        42e836e30242c2c14f889fd76c6f9a57b0c18ec2
 
     clone_repo_commit \
         https://codeberg.org/PicoEFI/PicoEFI.git \
         picoefi \
-        4bd08c13f103de9efd7b215a3e337447f1e2ce37
+        8b79fdaa72ee548a8ea24e3dc4d87bf281312865
 
     clone_repo_commit \
         https://github.com/jibsen/tinf.git \
@@ -104,7 +104,7 @@
     clone_repo_commit \
         https://codeberg.org/Mintsuki/Flanterm.git \
         flanterm \
-        f9d424145bdde18872714094434797e2f44ff5b4
+        cc71c677566453be4d1e821ede227a101868638c
 
     download_by_hash \
         
https://github.com/nothings/stb/raw/5c205738c191bcb0abc65c4febfa9bd25ff35234/stb_image.h
 \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/crypt/blake2b.c 
new/limine-10.6.1/common/crypt/blake2b.c
--- old/limine-10.6.0/common/crypt/blake2b.c    2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/common/crypt/blake2b.c    2026-01-05 07:03:43.000000000 
+0100
@@ -62,6 +62,17 @@
     uint8_t personal[BLAKE2B_PERSONAL_BYTES];
 } __attribute__((packed));
 
+// Safe unaligned load/store helpers for architectures with strict alignment 
(ARM64, RISC-V)
+static inline uint64_t load64_le(const void *src) {
+    uint64_t val;
+    memcpy(&val, src, sizeof(val));
+    return val;
+}
+
+static inline void store64_le(void *dst, uint64_t val) {
+    memcpy(dst, &val, sizeof(val));
+}
+
 static void blake2b_increment_counter(struct blake2b_state *state, uint64_t 
inc) {
     state->t[0] += inc;
     state->t[1] += state->t[0] < inc;
@@ -98,7 +109,7 @@
     uint64_t v[16];
 
     for (int i = 0; i < 16; i++) {
-        m[i] = *(uint64_t *)(block + i * sizeof(m[i]));
+        m[i] = load64_le(block + i * sizeof(m[i]));
     }
 
     for (int i = 0; i < 8; i++) {
@@ -149,7 +160,7 @@
     }
 
     for (int i = 0; i < 8; i++) {
-        state->h[i] ^= *(uint64_t *)((void *)&param + sizeof(state->h[i]) * i);
+        state->h[i] ^= load64_le((uint8_t *)&param + sizeof(state->h[i]) * i);
     }
 }
 
@@ -175,8 +186,8 @@
             blake2b_increment_counter(state, BLAKE2B_BLOCK_BYTES);
             blake2b_compress(state, in);
 
-            in += fill;
-            in_len -= fill;
+            in += BLAKE2B_BLOCK_BYTES;
+            in_len -= BLAKE2B_BLOCK_BYTES;
         }
     }
 
@@ -193,7 +204,7 @@
     blake2b_compress(state, state->buf);
 
     for (int i = 0; i < 8; i++) {
-        *(uint64_t *)(buffer + sizeof(state->h[i]) * i) = state->h[i];
+        store64_le(buffer + sizeof(state->h[i]) * i, state->h[i]);
     }
 
     memcpy(out, buffer, BLAKE2B_OUT_BYTES);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/drivers/serial.c 
new/limine-10.6.1/common/drivers/serial.c
--- old/limine-10.6.0/common/drivers/serial.c   2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/common/drivers/serial.c   2026-01-05 07:03:43.000000000 
+0100
@@ -21,6 +21,9 @@
         serial_baudrate = 115200;
     } else {
         serial_baudrate = strtoui(baudrate_s, NULL, 10);
+        if (serial_baudrate == 0 || serial_baudrate > 115200) {
+            serial_baudrate = 115200;
+        }
     }
 
     // Init com1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/fs/fat32.s2.c 
new/limine-10.6.1/common/fs/fat32.s2.c
--- old/limine-10.6.0/common/fs/fat32.s2.c      2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/common/fs/fat32.s2.c      2026-01-05 07:03:43.000000000 
+0100
@@ -103,7 +103,9 @@
     context->part = part;
 
     struct fat32_bpb bpb;
-    volume_read(context->part, &bpb, 0, sizeof(struct fat32_bpb));
+    if (!volume_read(context->part, &bpb, 0, sizeof(struct fat32_bpb))) {
+        return 1;
+    }
 
     // Sanity check of bpb
 
@@ -218,7 +220,11 @@
         return 1;  // Overflow in root_start calculation
     }
     context->root_start = (uint32_t)root_start_64;
-    context->root_size = DIV_ROUNDUP(context->root_entries * sizeof(struct 
fat32_directory_entry), context->bytes_per_sector);
+    uint64_t root_dir_bytes_temp;
+    if (__builtin_mul_overflow((uint64_t)context->root_entries, 
(uint64_t)sizeof(struct fat32_directory_entry), &root_dir_bytes_temp)) {
+        return 1;
+    }
+    context->root_size = DIV_ROUNDUP(root_dir_bytes_temp, 
context->bytes_per_sector);
     switch (context->type) {
         case 12:
         case 16:
@@ -283,7 +289,9 @@
                 return -1;
             }
 
-            volume_read(context->part, &tmp, fat_base + offset, 
sizeof(uint16_t));
+            if (!volume_read(context->part, &tmp, fat_base + offset, 
sizeof(uint16_t))) {
+                return -1;
+            }
             if (cluster % 2 == 0) {
                 *out = tmp & 0xfff;
             } else {
@@ -297,7 +305,9 @@
             if (offset + sizeof(uint16_t) > fat_size) {
                 return -1;
             }
-            volume_read(context->part, out, fat_base + offset, 
sizeof(uint16_t));
+            if (!volume_read(context->part, out, fat_base + offset, 
sizeof(uint16_t))) {
+                return -1;
+            }
             break;
         }
         case 32: {
@@ -305,7 +315,9 @@
             if (offset + sizeof(uint32_t) > fat_size) {
                 return -1;
             }
-            volume_read(context->part, out, fat_base + offset, 
sizeof(uint32_t));
+            if (!volume_read(context->part, out, fat_base + offset, 
sizeof(uint32_t))) {
+                return -1;
+            }
             *out &= 0x0fffffff;
             break;
         }
@@ -337,7 +349,9 @@
     uint32_t cluster = initial_cluster;
     size_t chain_length;
     for (chain_length = 1; chain_length <= max_clusters; chain_length++) {
-        read_cluster_from_map(context, cluster, &cluster);
+        if (read_cluster_from_map(context, cluster, &cluster) != 0) {
+            return NULL;
+        }
         if (cluster < 0x2 || cluster > cluster_limit)
             break;
     }
@@ -355,7 +369,10 @@
     cluster = initial_cluster;
     for (size_t i = 0; i < chain_length; i++) {
         cluster_chain[i] = cluster;
-        read_cluster_from_map(context, cluster, &cluster);
+        if (read_cluster_from_map(context, cluster, &cluster) != 0) {
+            pmm_free(cluster_chain, alloc_size);
+            return NULL;
+        }
     }
     *_chain_length = chain_length;
     return cluster_chain;
@@ -401,7 +418,9 @@
         if (__builtin_mul_overflow(sector_offset, 
(uint64_t)context->bytes_per_sector, &base)) {
             return false;
         }
-        volume_read(context->part, buf + progress, base + offset, chunk);
+        if (!volume_read(context->part, buf + progress, base + offset, chunk)) 
{
+            return false;
+        }
 
         progress += chunk;
     }
@@ -487,7 +506,11 @@
 
         pmm_free(directory_cluster_chain, dir_chain_len * sizeof(uint32_t));
     } else {
-        dir_chain_len = DIV_ROUNDUP(context->root_entries * sizeof(struct 
fat32_directory_entry), block_size);
+        uint64_t root_dir_bytes_temp;
+        if (__builtin_mul_overflow((uint64_t)context->root_entries, 
(uint64_t)sizeof(struct fat32_directory_entry), &root_dir_bytes_temp)) {
+            return -1;
+        }
+        dir_chain_len = DIV_ROUNDUP(root_dir_bytes_temp, block_size);
 
         // Check for overflow
         size_t alloc_size;
@@ -502,7 +525,10 @@
             pmm_free(directory_entries, alloc_size);
             return -1;
         }
-        volume_read(context->part, directory_entries, root_offset, 
context->root_entries * sizeof(struct fat32_directory_entry));
+        if (!volume_read(context->part, directory_entries, root_offset, 
context->root_entries * sizeof(struct fat32_directory_entry))) {
+            pmm_free(directory_entries, alloc_size);
+            return -1;
+        }
     }
 
     int ret;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/fs/iso9660.s2.c 
new/limine-10.6.1/common/fs/iso9660.s2.c
--- old/limine-10.6.0/common/fs/iso9660.s2.c    2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/common/fs/iso9660.s2.c    2026-01-05 07:03:43.000000000 
+0100
@@ -119,7 +119,9 @@
         if (__builtin_mul_overflow((uint64_t)lba, 
(uint64_t)ISO9660_SECTOR_SIZE, &offset)) {
             panic(false, "ISO9660: volume descriptor offset overflow");
         }
-        volume_read(vol, desc, offset, sizeof(struct iso9660_primary_volume));
+        if (!volume_read(vol, desc, offset, sizeof(struct 
iso9660_primary_volume))) {
+            panic(false, "ISO9660: failed to read volume descriptor");
+        }
 
         switch (desc->volume_descriptor.type) {
         case ISO9660_VDT_PRIMARY:
@@ -153,7 +155,9 @@
     if (__builtin_mul_overflow((uint64_t)pv.root.extent.little, 
(uint64_t)ISO9660_SECTOR_SIZE, &offset)) {
         panic(false, "ISO9660: root extent offset overflow");
     }
-    volume_read(vol, *root, offset, *root_size);
+    if (!volume_read(vol, *root, offset, *root_size)) {
+        panic(false, "ISO9660: failed to read root directory");
+    }
 }
 
 static struct iso9660_context *iso9660_get_context(struct volume *vol) {
@@ -352,7 +356,9 @@
 struct file_handle *iso9660_open(struct volume *vol, const char *path) {
     char buf[6];
     const uint64_t signature = ISO9660_FIRST_VOLUME_DESCRIPTOR * 
ISO9660_SECTOR_SIZE + 1;
-    volume_read(vol, buf, signature, 5);
+    if (!volume_read(vol, buf, signature, 5)) {
+        return NULL;
+    }
     buf[5] = '\0';
     if (strcmp(buf, "CD001") != 0) {
         return NULL;
@@ -488,7 +494,11 @@
             pmm_free(ret, sizeof(struct iso9660_file_handle));
             return NULL;
         }
-        volume_read(vol, current, dir_offset, current_size);
+        if (!volume_read(vol, current, dir_offset, current_size)) {
+            pmm_free(current, current_size);
+            pmm_free(ret, sizeof(struct iso9660_file_handle));
+            return NULL;
+        }
     }
 
     // Free the last directory buffer if we allocated one (not the cached root)
@@ -542,7 +552,9 @@
                 panic(false, "iso9660: offset calculation overflow");
             }
 
-            volume_read(f->context->vol, buf, disk_offset, to_read);
+            if (!volume_read(f->context->vol, buf, disk_offset, to_read)) {
+                panic(false, "iso9660: failed to read file data");
+            }
 
             buf = (uint8_t *)buf + to_read;
             loc += to_read;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/lib/acpi.h 
new/limine-10.6.1/common/lib/acpi.h
--- old/limine-10.6.0/common/lib/acpi.h 2025-12-28 15:18:08.000000000 +0100
+++ new/limine-10.6.1/common/lib/acpi.h 2026-01-05 07:03:43.000000000 +0100
@@ -95,10 +95,8 @@
     uint8_t docrev;
     uint8_t entry_point_revision;
     uint8_t reserved;
-    /// Size of the largest SMBIOS structure, in bytes, and encompasses the
-    /// structure’s formatted area and text strings
-    uint16_t max_structure_size;
-    uint16_t padding;
+    /// Size of the SMBIOS Structure Table, in bytes.
+    uint32_t table_maximum_size;
     /// 64-bit physical starting address of the read-only SMBIOS Structure
     /// Table.
     uint64_t table_address;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/lib/config.c 
new/limine-10.6.1/common/lib/config.c
--- old/limine-10.6.0/common/lib/config.c       2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/common/lib/config.c       2026-01-05 07:03:43.000000000 
+0100
@@ -187,7 +187,7 @@
 
     if (smbios_entry_64) {
         hdr = (void *)(uintptr_t) smbios_entry_64->table_address;
-        table_length = smbios_entry_64->max_structure_size;
+        table_length = smbios_entry_64->table_maximum_size;
     } else {
         hdr = (void *)(uintptr_t) smbios_entry_32->table_address;
         struct_count = smbios_entry_32->number_of_structures;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/lib/fb.c 
new/limine-10.6.1/common/lib/fb.c
--- old/limine-10.6.0/common/lib/fb.c   2025-12-28 15:18:08.000000000 +0100
+++ new/limine-10.6.1/common/lib/fb.c   2026-01-05 07:03:43.000000000 +0100
@@ -54,7 +54,8 @@
             default: {
                 uint8_t *fbp = (void *)(uintptr_t)fb->framebuffer_addr;
                 size_t row = y * fb->framebuffer_pitch;
-                for (size_t x = 0; x < fb->framebuffer_width * 
fb->framebuffer_bpp; x++) {
+                size_t row_bytes = fb->framebuffer_width * 
(fb->framebuffer_bpp / 8);
+                for (size_t x = 0; x < row_bytes; x++) {
                     fbp[row + x] = 0;
                 }
                 break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/lib/getchar.c 
new/limine-10.6.1/common/lib/getchar.c
--- old/limine-10.6.0/common/lib/getchar.c      2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/common/lib/getchar.c      2026-01-05 07:03:43.000000000 
+0100
@@ -138,6 +138,9 @@
             break;
         }
 
+        if (val > 999) {
+            break;
+        }
         val *= 10;
         val += ret - '0';
     }
@@ -236,6 +239,9 @@
             break;
         }
 
+        if (val > 999) {
+            break;
+        }
         val *= 10;
         val += kd.Key.UnicodeChar - '0';
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/lib/libc.h 
new/limine-10.6.1/common/lib/libc.h
--- old/limine-10.6.0/common/lib/libc.h 2025-12-28 15:18:08.000000000 +0100
+++ new/limine-10.6.1/common/lib/libc.h 2026-01-05 07:03:43.000000000 +0100
@@ -15,7 +15,7 @@
 int abs(int i);
 
 void *memset(void *, int, size_t);
-void *memcpy(void *, const void *, size_t);
+void *memcpy(void *restrict, const void *restrict, size_t);
 int memcmp(const void *, const void *, size_t);
 void *memmove(void *, const void *, size_t);
 void *memchr(const void *, int, size_t);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/lib/mem.asm_x86_64 
new/limine-10.6.1/common/lib/mem.asm_x86_64
--- old/limine-10.6.0/common/lib/mem.asm_x86_64 2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/common/lib/mem.asm_x86_64 1970-01-01 01:00:00.000000000 
+0100
@@ -1,57 +0,0 @@
-section .text
-
-global memcpy
-memcpy:
-    mov rcx, rdx
-    mov rax, rdi
-    rep movsb
-    ret
-
-global memset
-memset:
-    push rdi
-    mov rax, rsi
-    mov rcx, rdx
-    rep stosb
-    pop rax
-    ret
-
-global memmove
-memmove:
-    mov rcx, rdx
-    mov rax, rdi
-
-    cmp rdi, rsi
-    ja .copy_backwards
-
-    rep movsb
-    jmp .done
-
-  .copy_backwards:
-    lea rdi, [rdi+rcx-1]
-    lea rsi, [rsi+rcx-1]
-    std
-    rep movsb
-    cld
-
-  .done:
-    ret
-
-global memcmp
-memcmp:
-    mov rcx, rdx
-    repe cmpsb
-    je .equal
-
-    mov al, byte [rdi-1]
-    sub al, byte [rsi-1]
-    movsx rax, al
-    jmp .done
-
-  .equal:
-    xor eax, eax
-
-  .done:
-    ret
-
-section .note.GNU-stack noalloc noexec nowrite progbits
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/lib/mem.s2.asm_ia32 
new/limine-10.6.1/common/lib/mem.s2.asm_ia32
--- old/limine-10.6.0/common/lib/mem.s2.asm_ia32        2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/common/lib/mem.s2.asm_ia32        1970-01-01 
01:00:00.000000000 +0100
@@ -1,77 +0,0 @@
-section .text
-
-global memcpy
-memcpy:
-    push esi
-    push edi
-    mov eax, dword [esp+12]
-    mov edi, eax
-    mov esi, dword [esp+16]
-    mov ecx, dword [esp+20]
-    rep movsb
-    pop edi
-    pop esi
-    ret
-
-global memset
-memset:
-    push edi
-    mov edx, dword [esp+8]
-    mov edi, edx
-    mov eax, dword [esp+12]
-    mov ecx, dword [esp+16]
-    rep stosb
-    mov eax, edx
-    pop edi
-    ret
-
-global memmove
-memmove:
-    push esi
-    push edi
-    mov eax, dword [esp+12]
-    mov edi, eax
-    mov esi, dword [esp+16]
-    mov ecx, dword [esp+20]
-
-    cmp edi, esi
-    ja .copy_backwards
-
-    rep movsb
-    jmp .done
-
-  .copy_backwards:
-    lea edi, [edi+ecx-1]
-    lea esi, [esi+ecx-1]
-    std
-    rep movsb
-    cld
-
-  .done:
-    pop edi
-    pop esi
-    ret
-
-global memcmp
-memcmp:
-    push esi
-    push edi
-    mov edi, dword [esp+12]
-    mov esi, dword [esp+16]
-    mov ecx, dword [esp+20]
-    repe cmpsb
-    je .equal
-    mov al, byte [edi-1]
-    sub al, byte [esi-1]
-    movsx eax, al
-    jmp .done
-
-  .equal:
-    xor eax, eax
-
-  .done:
-    pop edi
-    pop esi
-    ret
-
-section .note.GNU-stack noalloc noexec nowrite progbits
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/lib/memory.s2.c 
new/limine-10.6.1/common/lib/memory.s2.c
--- old/limine-10.6.0/common/lib/memory.s2.c    2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/common/lib/memory.s2.c    2026-01-05 07:03:43.000000000 
+0100
@@ -1,11 +1,9 @@
-#if !defined (__x86_64__) && !defined (__i386__)
-
 #include <stdint.h>
 #include <stddef.h>
 
-void *memcpy(void *dest, const void *src, size_t n) {
-    uint8_t *pdest = (uint8_t *)dest;
-    const uint8_t *psrc = (const uint8_t *)src;
+void *memcpy(void *restrict dest, const void *restrict src, size_t n) {
+    uint8_t *restrict pdest = (uint8_t *restrict)dest;
+    const uint8_t *restrict psrc = (const uint8_t *restrict)src;
 
     for (size_t i = 0; i < n; i++) {
         pdest[i] = psrc[i];
@@ -53,5 +51,3 @@
 
     return 0;
 }
-
-#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/lib/part.s2.c 
new/limine-10.6.1/common/lib/part.s2.c
--- old/limine-10.6.0/common/lib/part.s2.c      2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/common/lib/part.s2.c      2026-01-05 07:03:43.000000000 
+0100
@@ -156,7 +156,8 @@
 
     for (size_t i = 0; i < SIZEOF_ARRAY(lb_guesses); i++) {
         // read header, located after the first block
-        volume_read(volume, &header, lb_guesses[i] * 1, sizeof(header));
+        if (!volume_read(volume, &header, lb_guesses[i] * 1, sizeof(header)))
+            continue;
 
         // check the header
         // 'EFI PART'
@@ -190,7 +191,8 @@
 
     for (size_t i = 0; i < SIZEOF_ARRAY(lb_guesses); i++) {
         // read header, located after the first block
-        volume_read(volume, &header, lb_guesses[i] * 1, sizeof(header));
+        if (!volume_read(volume, &header, lb_guesses[i] * 1, sizeof(header)))
+            continue;
 
         // check the header
         // 'EFI PART'
@@ -230,7 +232,9 @@
     }
 
     struct gpt_entry entry = {0};
-    volume_read(volume, &entry, entry_offset, sizeof(entry));
+    if (!volume_read(volume, &entry, entry_offset, sizeof(entry))) {
+        return END_OF_TABLE;
+    }
 
     struct guid empty_guid = {0};
     if (!memcmp(&entry.unique_partition_guid, &empty_guid, sizeof(struct 
guid)))
@@ -313,33 +317,42 @@
     // Check if actually valid mbr
     uint16_t hint = 0;
 
-    volume_read(volume, &hint, 446, sizeof(uint8_t));
+    if (!volume_read(volume, &hint, 446, sizeof(uint8_t)))
+        return false;
     if ((uint8_t)hint != 0x00 && (uint8_t)hint != 0x80)
         return false;
-    volume_read(volume, &hint, 462, sizeof(uint8_t));
+    if (!volume_read(volume, &hint, 462, sizeof(uint8_t)))
+        return false;
     if ((uint8_t)hint != 0x00 && (uint8_t)hint != 0x80)
         return false;
-    volume_read(volume, &hint, 478, sizeof(uint8_t));
+    if (!volume_read(volume, &hint, 478, sizeof(uint8_t)))
+        return false;
     if ((uint8_t)hint != 0x00 && (uint8_t)hint != 0x80)
         return false;
-    volume_read(volume, &hint, 494, sizeof(uint8_t));
+    if (!volume_read(volume, &hint, 494, sizeof(uint8_t)))
+        return false;
     if ((uint8_t)hint != 0x00 && (uint8_t)hint != 0x80)
         return false;
 
     char hintc[64];
-    volume_read(volume, hintc, 3, 4);
+    if (!volume_read(volume, hintc, 3, 4))
+        return false;
     if (memcmp(hintc, "NTFS", 4) == 0)
         return false;
-    volume_read(volume, hintc, 54, 3);
+    if (!volume_read(volume, hintc, 54, 3))
+        return false;
     if (memcmp(hintc, "FAT", 3) == 0)
         return false;
-    volume_read(volume, hintc, 82, 3);
+    if (!volume_read(volume, hintc, 82, 3))
+        return false;
     if (memcmp(hintc, "FAT", 3) == 0)
         return false;
-    volume_read(volume, hintc, 3, 5);
+    if (!volume_read(volume, hintc, 3, 5))
+        return false;
     if (memcmp(hintc, "FAT32", 5) == 0)
         return false;
-    volume_read(volume, &hint, 1080, sizeof(uint16_t));
+    if (!volume_read(volume, &hint, 1080, sizeof(uint16_t)))
+        return false;
     if (hint == 0xef53)
         return false;
 
@@ -352,7 +365,9 @@
     }
 
     uint32_t ret;
-    volume_read(volume, &ret, 0x1b8, sizeof(uint32_t));
+    if (!volume_read(volume, &ret, 0x1b8, sizeof(uint32_t))) {
+        return 0;
+    }
 
     return ret;
 }
@@ -375,7 +390,9 @@
     for (int i = 0; i < partition; i++) {
         uint64_t entry_offset = ebr_sector * 512 + 0x1ce;
 
-        volume_read(extended_part, &entry, entry_offset, sizeof(struct 
mbr_entry));
+        if (!volume_read(extended_part, &entry, entry_offset, sizeof(struct 
mbr_entry))) {
+            return END_OF_TABLE;
+        }
 
         if (entry.type != 0x0f && entry.type != 0x05) {
             return END_OF_TABLE;
@@ -398,7 +415,9 @@
 
     uint64_t entry_offset = ebr_sector * 512 + 0x1be;
 
-    volume_read(extended_part, &entry, entry_offset, sizeof(struct mbr_entry));
+    if (!volume_read(extended_part, &entry, entry_offset, sizeof(struct 
mbr_entry))) {
+        return END_OF_TABLE;
+    }
 
     if (entry.type == 0)
         return NO_PARTITION;
@@ -468,7 +487,9 @@
         for (int i = 0; i < 4; i++) {
             uint64_t entry_offset = 0x1be + sizeof(struct mbr_entry) * i;
 
-            volume_read(volume, &entry, entry_offset, sizeof(struct 
mbr_entry));
+            if (!volume_read(volume, &entry, entry_offset, sizeof(struct 
mbr_entry))) {
+                continue;
+            }
 
             if (entry.type != 0x0f && entry.type != 0x05)
                 continue;
@@ -503,7 +524,9 @@
 
     uint64_t entry_offset = 0x1be + sizeof(struct mbr_entry) * partition;
 
-    volume_read(volume, &entry, entry_offset, sizeof(struct mbr_entry));
+    if (!volume_read(volume, &entry, entry_offset, sizeof(struct mbr_entry))) {
+        return END_OF_TABLE;
+    }
 
     if (entry.type == 0)
         return NO_PARTITION;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/libc-compat/string.h 
new/limine-10.6.1/common/libc-compat/string.h
--- old/limine-10.6.0/common/libc-compat/string.h       2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/common/libc-compat/string.h       2026-01-05 
07:03:43.000000000 +0100
@@ -4,7 +4,7 @@
 #include <stddef.h>
 
 void *memset(void *, int, size_t);
-void *memcpy(void *, const void *, size_t);
+void *memcpy(void *restrict, const void *restrict, size_t);
 int memcmp(const void *, const void *, size_t);
 void *memmove(void *, const void *, size_t);
 void *memchr(const void *, int, size_t);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/menu.c 
new/limine-10.6.1/common/menu.c
--- old/limine-10.6.0/common/menu.c     2025-12-28 15:18:08.000000000 +0100
+++ new/limine-10.6.1/common/menu.c     2026-01-05 07:03:43.000000000 +0100
@@ -493,7 +493,7 @@
             if (cursor_offset) {
                 cursor_offset--;
         case GETCHAR_DELETE:
-                for (size_t i = cursor_offset; ; i++) {
+                for (size_t i = cursor_offset; i < buffer_len; i++) {
                     buffer[i] = buffer[i+1];
                     if (!buffer[i])
                         break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/mm/pmm.s2.c 
new/limine-10.6.1/common/mm/pmm.s2.c
--- old/limine-10.6.0/common/mm/pmm.s2.c        2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/common/mm/pmm.s2.c        2026-01-05 07:03:43.000000000 
+0100
@@ -111,7 +111,7 @@
     *length -= (*base - orig_base);
     *length =  ALIGN_DOWN(*length, PAGE_SIZE);
 
-    if (!length)
+    if (*length == 0)
         return false;
 
     return true;
@@ -800,14 +800,21 @@
         return true;
     }
 
-    uint64_t top = base + length;
+    uint64_t top;
+    if (__builtin_add_overflow(base, length, &top)) {
+        if (do_panic)
+            panic(false, "Memory allocation overflow.");
+        return false;
+    }
 
     for (size_t i = 0; i < count; i++) {
         if (overlay_type != 0 && m[i].type != overlay_type)
             continue;
 
         uint64_t entry_base = m[i].base;
-        uint64_t entry_top  = m[i].base + m[i].length;
+        uint64_t entry_top;
+        if (__builtin_add_overflow(m[i].base, m[i].length, &entry_top))
+            continue;
 
         if (base >= entry_base && base < entry_top && top <= entry_top) {
             if (simulation)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/protos/chainload.c 
new/limine-10.6.1/common/protos/chainload.c
--- old/limine-10.6.0/common/protos/chainload.c 2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/common/protos/chainload.c 2026-01-05 07:03:43.000000000 
+0100
@@ -161,7 +161,9 @@
             }
 
             uint32_t mbr_id_1;
-            volume_read(p, &mbr_id_1, 0x1b8, sizeof(uint32_t));
+            if (!volume_read(p, &mbr_id_1, 0x1b8, sizeof(uint32_t))) {
+                continue;
+            }
 
             if (mbr_id_1 == mbr_id) {
                 p = volume_get_by_coord(false, p->index, part);
@@ -182,7 +184,9 @@
 
     void *buf = ext_mem_alloc(512);
 
-    volume_read(p, buf, 0, 512);
+    if (!volume_read(p, buf, 0, 512)) {
+        panic(true, "bios: Failed to read boot sector");
+    }
 
     uint16_t *boot_sig = (uint16_t *)(buf + 0x1fe);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/protos/multiboot1.c 
new/limine-10.6.1/common/protos/multiboot1.c
--- old/limine-10.6.0/common/protos/multiboot1.c        2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/common/protos/multiboot1.c        2026-01-05 
07:03:43.000000000 +0100
@@ -73,8 +73,18 @@
     struct multiboot1_header header = {0};
     size_t header_offset = 0;
 
-    for (header_offset = 0; header_offset < 8192; header_offset += 4) {
-        uint32_t v = *(uint32_t *)(kernel+header_offset);
+    // Per Multiboot spec, header must be within first 8192 bytes and 4-byte 
aligned.
+    // Ensure we don't read past end of file when checking magic or copying 
header.
+    size_t search_limit = 8192;
+    if (kernel_file_size < sizeof(struct multiboot1_header)) {
+        panic(true, "multiboot1: Kernel file too small to contain header");
+    }
+    if (search_limit > kernel_file_size - sizeof(struct multiboot1_header)) {
+        search_limit = kernel_file_size - sizeof(struct multiboot1_header);
+    }
+
+    for (header_offset = 0; header_offset <= search_limit; header_offset += 4) 
{
+        uint32_t v = *(uint32_t *)(kernel + header_offset);
 
         if (v == MULTIBOOT1_HEADER_MAGIC) {
             memcpy(&header, kernel + header_offset, sizeof(header));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/protos/multiboot2.c 
new/limine-10.6.1/common/protos/multiboot2.c
--- old/limine-10.6.0/common/protos/multiboot2.c        2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/common/protos/multiboot2.c        2026-01-05 
07:03:43.000000000 +0100
@@ -90,9 +90,19 @@
 
     fclose(kernel_file);
 
-    struct multiboot_header *header;
+    struct multiboot_header *header = NULL;
 
-    for (size_t header_offset = 0; header_offset < MULTIBOOT_SEARCH; 
header_offset += MULTIBOOT_HEADER_ALIGN) {
+    // Per Multiboot2 spec, header must be within first 32768 bytes and 8-byte 
aligned.
+    // Ensure we don't read past end of file when checking magic.
+    size_t search_limit = MULTIBOOT_SEARCH;
+    if (kernel_file_size < sizeof(struct multiboot_header)) {
+        panic(true, "multiboot2: Kernel file too small to contain header");
+    }
+    if (search_limit > kernel_file_size - sizeof(struct multiboot_header)) {
+        search_limit = kernel_file_size - sizeof(struct multiboot_header);
+    }
+
+    for (size_t header_offset = 0; header_offset <= search_limit; 
header_offset += MULTIBOOT_HEADER_ALIGN) {
         header = (void *)(kernel + header_offset);
 
         if (header->magic == MULTIBOOT2_HEADER_MAGIC) {
@@ -100,7 +110,7 @@
         }
     }
 
-    if (header->magic != MULTIBOOT2_HEADER_MAGIC) {
+    if (header == NULL || header->magic != MULTIBOOT2_HEADER_MAGIC) {
         panic(true, "multiboot2: Invalid magic");
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/pxe/tftp.s2.c 
new/limine-10.6.1/common/pxe/tftp.s2.c
--- old/limine-10.6.0/common/pxe/tftp.s2.c      2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/common/pxe/tftp.s2.c      2026-01-05 07:03:43.000000000 
+0100
@@ -117,6 +117,15 @@
         return NULL;
     }
 
+    // Validate server's negotiated packet size doesn't exceed our buffer
+    if (open.packet_size > mtu) {
+        print("tftp: Server requested packet size %u exceeds our MTU %u\n", 
open.packet_size, mtu);
+        pxe_call(TFTP_CLOSE, ((uint16_t)rm_seg(&(uint16_t){0})), 
(uint16_t)rm_off(&(uint16_t){0}));
+        pmm_free(handle->path, handle->path_len);
+        pmm_free(handle, sizeof(struct file_handle));
+        return NULL;
+    }
+
     uint16_t alloc_mtu = mtu;  // Save original MTU for allocation/free
     uint8_t *buf = conv_mem_alloc(alloc_mtu);
 
@@ -137,8 +146,8 @@
             panic(false, "tftp: Read failure");
         }
 
-        // Validate read size doesn't overflow the buffer
-        if (read.bsize > mtu || progress + read.bsize > handle->size) {
+        // Validate read size doesn't overflow the buffer (use alloc_mtu, not 
server's mtu)
+        if (read.bsize > alloc_mtu || progress + read.bsize > handle->size) {
             panic(false, "tftp: Server sent more data than expected");
         }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/sys/cpu_riscv.c 
new/limine-10.6.1/common/sys/cpu_riscv.c
--- old/limine-10.6.0/common/sys/cpu_riscv.c    2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/common/sys/cpu_riscv.c    2026-01-05 07:03:43.000000000 
+0100
@@ -137,7 +137,8 @@
         }
 
         if (strncmp("rv64", isa_string, 4) && strncmp("rv32", isa_string, 4)) {
-            print("riscv: skipping hartid %u with invalid isa string: %s", 
hartid, isa_string);
+            print("riscv: skipping hartid %u with invalid isa string: %s\n", 
hartid, isa_string);
+            continue;
         }
 
         struct riscv_hart *hart = ext_mem_alloc(sizeof(struct riscv_hart));
@@ -205,7 +206,8 @@
         }
 
         if (strncmp("rv64", isa_string, 4) && strncmp("rv32", isa_string, 4)) {
-            print("riscv: skipping hartid %u with invalid isa string: %s", 
hartid, isa_string);
+            print("riscv: skipping hartid %u with invalid isa string: %s\n", 
hartid, isa_string);
+            continue;
         }
 
         struct riscv_hart *hart = ext_mem_alloc(sizeof(struct riscv_hart));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/sys/exceptions.s2.c 
new/limine-10.6.1/common/sys/exceptions.s2.c
--- old/limine-10.6.0/common/sys/exceptions.s2.c        2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/common/sys/exceptions.s2.c        2026-01-05 
07:03:43.000000000 +0100
@@ -41,7 +41,10 @@
 
 void except(uint32_t exception, uint32_t error_code, uint32_t ebp, uint32_t 
eip) {
     (void)ebp;
-    panic(false, "%s exception at %x. Error code: %x", 
exception_names[exception], eip, error_code);
+    const char *exception_name = exception < SIZEOF_ARRAY(exception_names)
+                                 ? exception_names[exception]
+                                 : "Unknown";
+    panic(false, "%s exception at %x. Error code: %x", exception_name, eip, 
error_code);
 }
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/common/sys/smp.c 
new/limine-10.6.1/common/sys/smp.c
--- old/limine-10.6.0/common/sys/smp.c  2025-12-28 15:18:08.000000000 +0100
+++ new/limine-10.6.1/common/sys/smp.c  2026-01-05 07:03:43.000000000 +0100
@@ -152,6 +152,10 @@
     for (uint8_t *madt_ptr = (uint8_t *)madt->madt_entries_begin;
       (uintptr_t)madt_ptr < (uintptr_t)madt + madt->header.length;
       madt_ptr += *(madt_ptr + 1)) {
+        // Prevent infinite loop on zero-length MADT entry
+        if (*(madt_ptr + 1) == 0) {
+            break;
+        }
         switch (*madt_ptr) {
             case 0: {
                 // Processor local xAPIC
@@ -192,6 +196,10 @@
     for (uint8_t *madt_ptr = (uint8_t *)madt->madt_entries_begin;
       (uintptr_t)madt_ptr < (uintptr_t)madt + madt->header.length;
       madt_ptr += *(madt_ptr + 1)) {
+        // Prevent infinite loop on zero-length MADT entry
+        if (*(madt_ptr + 1) == 0) {
+            break;
+        }
         switch (*madt_ptr) {
             case 0: {
                 // Processor local xAPIC
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/configure new/limine-10.6.1/configure
--- old/limine-10.6.0/configure 2025-12-28 15:18:12.000000000 +0100
+++ new/limine-10.6.1/configure 2026-01-05 07:03:47.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.72 for Limine 10.6.0.
+# Generated by GNU Autoconf 2.72 for Limine 10.6.1.
 #
 # Report bugs to <https://codeberg.org/Limine/Limine/issues>.
 #
@@ -604,8 +604,8 @@
 # Identity of this package.
 PACKAGE_NAME='Limine'
 PACKAGE_TARNAME='limine'
-PACKAGE_VERSION='10.6.0'
-PACKAGE_STRING='Limine 10.6.0'
+PACKAGE_VERSION='10.6.1'
+PACKAGE_STRING='Limine 10.6.1'
 PACKAGE_BUGREPORT='https://codeberg.org/Limine/Limine/issues'
 PACKAGE_URL='https://limine-bootloader.org/'
 
@@ -1324,7 +1324,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-'configure' configures Limine 10.6.0 to adapt to many kinds of systems.
+'configure' configures Limine 10.6.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1390,7 +1390,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Limine 10.6.0:";;
+     short | recursive ) echo "Configuration of Limine 10.6.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1509,7 +1509,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-Limine configure 10.6.0
+Limine configure 10.6.1
 generated by GNU Autoconf 2.72
 
 Copyright (C) 2023 Free Software Foundation, Inc.
@@ -1621,7 +1621,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by Limine $as_me 10.6.0, which was
+It was created by Limine $as_me 10.6.1, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -6334,7 +6334,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by Limine $as_me 10.6.0, which was
+This file was extended by Limine $as_me 10.6.1, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -6390,7 +6390,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-Limine config.status 10.6.0
+Limine config.status 10.6.1
 configured by $0, generated by GNU Autoconf 2.72,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/decompressor/mem.asm 
new/limine-10.6.1/decompressor/mem.asm
--- old/limine-10.6.0/decompressor/mem.asm      2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/decompressor/mem.asm      1970-01-01 01:00:00.000000000 
+0100
@@ -1,77 +0,0 @@
-section .text
-
-global memcpy
-memcpy:
-    push esi
-    push edi
-    mov eax, dword [esp+12]
-    mov edi, eax
-    mov esi, dword [esp+16]
-    mov ecx, dword [esp+20]
-    rep movsb
-    pop edi
-    pop esi
-    ret
-
-global memset
-memset:
-    push edi
-    mov edx, dword [esp+8]
-    mov edi, edx
-    mov eax, dword [esp+12]
-    mov ecx, dword [esp+16]
-    rep stosb
-    mov eax, edx
-    pop edi
-    ret
-
-global memmove
-memmove:
-    push esi
-    push edi
-    mov eax, dword [esp+12]
-    mov edi, eax
-    mov esi, dword [esp+16]
-    mov ecx, dword [esp+20]
-
-    cmp edi, esi
-    ja .copy_backwards
-
-    rep movsb
-    jmp .done
-
-  .copy_backwards:
-    lea edi, [edi+ecx-1]
-    lea esi, [esi+ecx-1]
-    std
-    rep movsb
-    cld
-
-  .done:
-    pop edi
-    pop esi
-    ret
-
-global memcmp
-memcmp:
-    push esi
-    push edi
-    mov edi, dword [esp+12]
-    mov esi, dword [esp+16]
-    mov ecx, dword [esp+20]
-    repe cmpsb
-    je .equal
-    mov al, byte [edi-1]
-    sub al, byte [esi-1]
-    movsx eax, al
-    jmp .done
-
-  .equal:
-    xor eax, eax
-
-  .done:
-    pop edi
-    pop esi
-    ret
-
-section .note.GNU-stack noalloc noexec nowrite progbits
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/decompressor/memory.c 
new/limine-10.6.1/decompressor/memory.c
--- old/limine-10.6.0/decompressor/memory.c     1970-01-01 01:00:00.000000000 
+0100
+++ new/limine-10.6.1/decompressor/memory.c     2026-01-05 07:03:43.000000000 
+0100
@@ -0,0 +1,53 @@
+#include <stdint.h>
+#include <stddef.h>
+
+void *memcpy(void *restrict dest, const void *restrict src, size_t n) {
+    uint8_t *restrict pdest = (uint8_t *restrict)dest;
+    const uint8_t *restrict psrc = (const uint8_t *restrict)src;
+
+    for (size_t i = 0; i < n; i++) {
+        pdest[i] = psrc[i];
+    }
+
+    return dest;
+}
+
+void *memset(void *s, int c, size_t n) {
+    uint8_t *p = (uint8_t *)s;
+
+    for (size_t i = 0; i < n; i++) {
+        p[i] = (uint8_t)c;
+    }
+
+    return s;
+}
+
+void *memmove(void *dest, const void *src, size_t n) {
+    uint8_t *pdest = (uint8_t *)dest;
+    const uint8_t *psrc = (const uint8_t *)src;
+
+    if (src > dest) {
+        for (size_t i = 0; i < n; i++) {
+            pdest[i] = psrc[i];
+        }
+    } else if (src < dest) {
+        for (size_t i = n; i > 0; i--) {
+            pdest[i-1] = psrc[i-1];
+        }
+    }
+
+    return dest;
+}
+
+int memcmp(const void *s1, const void *s2, size_t n) {
+    const uint8_t *p1 = (const uint8_t *)s1;
+    const uint8_t *p2 = (const uint8_t *)s2;
+
+    for (size_t i = 0; i < n; i++) {
+        if (p1[i] != p2[i]) {
+            return p1[i] < p2[i] ? -1 : 1;
+        }
+    }
+
+    return 0;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/flanterm/LICENSE 
new/limine-10.6.1/flanterm/LICENSE
--- old/limine-10.6.0/flanterm/LICENSE  2025-12-28 15:18:09.000000000 +0100
+++ new/limine-10.6.1/flanterm/LICENSE  2026-01-05 07:03:44.000000000 +0100
@@ -1,4 +1,4 @@
-Copyright (C) 2022-2025 mintsuki and contributors.
+Copyright (C) 2022-2026 Mintsuki and contributors.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are met:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/flanterm/src/flanterm.c 
new/limine-10.6.1/flanterm/src/flanterm.c
--- old/limine-10.6.0/flanterm/src/flanterm.c   2025-12-28 15:18:09.000000000 
+0100
+++ new/limine-10.6.1/flanterm/src/flanterm.c   2026-01-05 07:03:44.000000000 
+0100
@@ -1,4 +1,6 @@
-/* Copyright (C) 2022-2025 mintsuki and contributors.
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/* Copyright (C) 2022-2026 Mintsuki and contributors.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/flanterm/src/flanterm.h 
new/limine-10.6.1/flanterm/src/flanterm.h
--- old/limine-10.6.0/flanterm/src/flanterm.h   2025-12-28 15:18:09.000000000 
+0100
+++ new/limine-10.6.1/flanterm/src/flanterm.h   2026-01-05 07:03:44.000000000 
+0100
@@ -1,4 +1,6 @@
-/* Copyright (C) 2022-2025 mintsuki and contributors.
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/* Copyright (C) 2022-2026 Mintsuki and contributors.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/flanterm/src/flanterm_backends/fb.c 
new/limine-10.6.1/flanterm/src/flanterm_backends/fb.c
--- old/limine-10.6.0/flanterm/src/flanterm_backends/fb.c       2025-12-28 
15:18:09.000000000 +0100
+++ new/limine-10.6.1/flanterm/src/flanterm_backends/fb.c       2026-01-05 
07:03:44.000000000 +0100
@@ -1,4 +1,6 @@
-/* Copyright (C) 2022-2025 mintsuki and contributors.
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/* Copyright (C) 2022-2026 Mintsuki and contributors.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/flanterm/src/flanterm_backends/fb.h 
new/limine-10.6.1/flanterm/src/flanterm_backends/fb.h
--- old/limine-10.6.0/flanterm/src/flanterm_backends/fb.h       2025-12-28 
15:18:09.000000000 +0100
+++ new/limine-10.6.1/flanterm/src/flanterm_backends/fb.h       2026-01-05 
07:03:44.000000000 +0100
@@ -1,4 +1,6 @@
-/* Copyright (C) 2022-2025 mintsuki and contributors.
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/* Copyright (C) 2022-2026 Mintsuki and contributors.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/limine-10.6.0/flanterm/src/flanterm_backends/fb_private.h 
new/limine-10.6.1/flanterm/src/flanterm_backends/fb_private.h
--- old/limine-10.6.0/flanterm/src/flanterm_backends/fb_private.h       
2025-12-28 15:18:09.000000000 +0100
+++ new/limine-10.6.1/flanterm/src/flanterm_backends/fb_private.h       
2026-01-05 07:03:44.000000000 +0100
@@ -1,4 +1,6 @@
-/* Copyright (C) 2022-2025 mintsuki and contributors.
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/* Copyright (C) 2022-2026 Mintsuki and contributors.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/flanterm/src/flanterm_private.h 
new/limine-10.6.1/flanterm/src/flanterm_private.h
--- old/limine-10.6.0/flanterm/src/flanterm_private.h   2025-12-28 
15:18:09.000000000 +0100
+++ new/limine-10.6.1/flanterm/src/flanterm_private.h   2026-01-05 
07:03:44.000000000 +0100
@@ -1,4 +1,6 @@
-/* Copyright (C) 2022-2025 mintsuki and contributors.
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/* Copyright (C) 2022-2026 Mintsuki and contributors.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/freestnd-c-hdrs/LICENSE 
new/limine-10.6.1/freestnd-c-hdrs/LICENSE
--- old/limine-10.6.0/freestnd-c-hdrs/LICENSE   2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/freestnd-c-hdrs/LICENSE   2026-01-05 07:03:43.000000000 
+0100
@@ -1,4 +1,4 @@
-Copyright (C) 2022-2025 Mintsuki and contributors.
+Copyright (C) 2022-2026 Mintsuki and contributors.
 
 Permission to use, copy, modify, and/or distribute this software for any
 purpose with or without fee is hereby granted.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/freestnd-c-hdrs/include/float.h 
new/limine-10.6.1/freestnd-c-hdrs/include/float.h
--- old/limine-10.6.0/freestnd-c-hdrs/include/float.h   2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/freestnd-c-hdrs/include/float.h   2026-01-05 
07:03:43.000000000 +0100
@@ -1,4 +1,6 @@
-/* Copyright (C) 2022-2025 Mintsuki and contributors.
+/* SPDX-License-Identifier: 0BSD */
+
+/* Copyright (C) 2022-2026 Mintsuki and contributors.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/freestnd-c-hdrs/include/iso646.h 
new/limine-10.6.1/freestnd-c-hdrs/include/iso646.h
--- old/limine-10.6.0/freestnd-c-hdrs/include/iso646.h  2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/freestnd-c-hdrs/include/iso646.h  2026-01-05 
07:03:43.000000000 +0100
@@ -1,4 +1,6 @@
-/* Copyright (C) 2022-2025 Mintsuki and contributors.
+/* SPDX-License-Identifier: 0BSD */
+
+/* Copyright (C) 2022-2026 Mintsuki and contributors.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/freestnd-c-hdrs/include/limits.h 
new/limine-10.6.1/freestnd-c-hdrs/include/limits.h
--- old/limine-10.6.0/freestnd-c-hdrs/include/limits.h  2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/freestnd-c-hdrs/include/limits.h  2026-01-05 
07:03:43.000000000 +0100
@@ -1,4 +1,6 @@
-/* Copyright (C) 2022-2025 Mintsuki and contributors.
+/* SPDX-License-Identifier: 0BSD */
+
+/* Copyright (C) 2022-2026 Mintsuki and contributors.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/freestnd-c-hdrs/include/stdalign.h 
new/limine-10.6.1/freestnd-c-hdrs/include/stdalign.h
--- old/limine-10.6.0/freestnd-c-hdrs/include/stdalign.h        2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/freestnd-c-hdrs/include/stdalign.h        2026-01-05 
07:03:43.000000000 +0100
@@ -1,4 +1,6 @@
-/* Copyright (C) 2022-2025 Mintsuki and contributors.
+/* SPDX-License-Identifier: 0BSD */
+
+/* Copyright (C) 2022-2026 Mintsuki and contributors.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/freestnd-c-hdrs/include/stdarg.h 
new/limine-10.6.1/freestnd-c-hdrs/include/stdarg.h
--- old/limine-10.6.0/freestnd-c-hdrs/include/stdarg.h  2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/freestnd-c-hdrs/include/stdarg.h  2026-01-05 
07:03:43.000000000 +0100
@@ -1,4 +1,6 @@
-/* Copyright (C) 2022-2025 Mintsuki and contributors.
+/* SPDX-License-Identifier: 0BSD */
+
+/* Copyright (C) 2022-2026 Mintsuki and contributors.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/freestnd-c-hdrs/include/stdbool.h 
new/limine-10.6.1/freestnd-c-hdrs/include/stdbool.h
--- old/limine-10.6.0/freestnd-c-hdrs/include/stdbool.h 2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/freestnd-c-hdrs/include/stdbool.h 2026-01-05 
07:03:43.000000000 +0100
@@ -1,4 +1,6 @@
-/* Copyright (C) 2022-2025 Mintsuki and contributors.
+/* SPDX-License-Identifier: 0BSD */
+
+/* Copyright (C) 2022-2026 Mintsuki and contributors.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/freestnd-c-hdrs/include/stddef.h 
new/limine-10.6.1/freestnd-c-hdrs/include/stddef.h
--- old/limine-10.6.0/freestnd-c-hdrs/include/stddef.h  2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/freestnd-c-hdrs/include/stddef.h  2026-01-05 
07:03:43.000000000 +0100
@@ -1,4 +1,6 @@
-/* Copyright (C) 2022-2025 Mintsuki and contributors.
+/* SPDX-License-Identifier: 0BSD */
+
+/* Copyright (C) 2022-2026 Mintsuki and contributors.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/freestnd-c-hdrs/include/stdint.h 
new/limine-10.6.1/freestnd-c-hdrs/include/stdint.h
--- old/limine-10.6.0/freestnd-c-hdrs/include/stdint.h  2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/freestnd-c-hdrs/include/stdint.h  2026-01-05 
07:03:43.000000000 +0100
@@ -1,4 +1,6 @@
-/* Copyright (C) 2022-2025 Mintsuki and contributors.
+/* SPDX-License-Identifier: 0BSD */
+
+/* Copyright (C) 2022-2026 Mintsuki and contributors.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/freestnd-c-hdrs/include/stdnoreturn.h 
new/limine-10.6.1/freestnd-c-hdrs/include/stdnoreturn.h
--- old/limine-10.6.0/freestnd-c-hdrs/include/stdnoreturn.h     2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/freestnd-c-hdrs/include/stdnoreturn.h     2026-01-05 
07:03:43.000000000 +0100
@@ -1,4 +1,6 @@
-/* Copyright (C) 2022-2025 Mintsuki and contributors.
+/* SPDX-License-Identifier: 0BSD */
+
+/* Copyright (C) 2022-2026 Mintsuki and contributors.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/limine-protocol/LICENSE 
new/limine-10.6.1/limine-protocol/LICENSE
--- old/limine-10.6.0/limine-protocol/LICENSE   2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/limine-protocol/LICENSE   2026-01-05 07:03:43.000000000 
+0100
@@ -1,4 +1,4 @@
-Copyright (C) 2022-2025 Mintsuki and contributors.
+Copyright (C) 2022-2026 Mintsuki and contributors.
 
 Permission to use, copy, modify, and/or distribute this software for any
 purpose with or without fee is hereby granted.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/limine-protocol/include/limine.h 
new/limine-10.6.1/limine-protocol/include/limine.h
--- old/limine-10.6.0/limine-protocol/include/limine.h  2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/limine-protocol/include/limine.h  2026-01-05 
07:03:43.000000000 +0100
@@ -1,6 +1,6 @@
-/* BSD Zero Clause License */
+/* SPDX-License-Identifier: 0BSD */
 
-/* Copyright (C) 2022-2025 Mintsuki and contributors.
+/* Copyright (C) 2022-2026 Mintsuki and contributors.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/picoefi/aarch64/entry.S 
new/limine-10.6.1/picoefi/aarch64/entry.S
--- old/limine-10.6.0/picoefi/aarch64/entry.S   2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/picoefi/aarch64/entry.S   2026-01-05 07:03:43.000000000 
+0100
@@ -2,7 +2,7 @@
  * crt0-efi-aarch64.S - PE/COFF header for AArch64 EFI applications
  *
  * Copyright (C) 2014 Linaro Ltd. <[email protected]>
- * Copyright (C) 2022-2025 mintsuki
+ * Copyright (C) 2022-2026 Mintsuki and contributors.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/picoefi/aarch64/link_script.lds 
new/limine-10.6.1/picoefi/aarch64/link_script.lds
--- old/limine-10.6.0/picoefi/aarch64/link_script.lds   2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/picoefi/aarch64/link_script.lds   2026-01-05 
07:03:43.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2021-2025 mintsuki and contributors.
+/* Copyright (C) 2021-2026 Mintsuki and contributors.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/picoefi/aarch64/reloc.c 
new/limine-10.6.1/picoefi/aarch64/reloc.c
--- old/limine-10.6.0/picoefi/aarch64/reloc.c   2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/picoefi/aarch64/reloc.c   2026-01-05 07:03:43.000000000 
+0100
@@ -2,7 +2,7 @@
    Copyright (C) 2014 Linaro Ltd. <[email protected]>
    Copyright (C) 1999 Hewlett-Packard Co.
        Contributed by David Mosberger <[email protected]>.
-   Copyright (C) 2022-2025 mintsuki
+   Copyright (C) 2022-2026 Mintsuki and contributors.
 
     All rights reserved.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/picoefi/ia32/entry.S 
new/limine-10.6.1/picoefi/ia32/entry.S
--- old/limine-10.6.0/picoefi/ia32/entry.S      2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/picoefi/ia32/entry.S      2026-01-05 07:03:43.000000000 
+0100
@@ -1,7 +1,7 @@
 /* crt0-efi-ia32.S - x86 EFI startup code.
    Copyright (C) 1999 Hewlett-Packard Co.
        Contributed by David Mosberger <[email protected]>.
-   Copyright (C) 2022-2025 mintsuki
+   Copyright (C) 2022-2026 Mintsuki and contributors.
 
     All rights reserved.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/picoefi/ia32/link_script.lds 
new/limine-10.6.1/picoefi/ia32/link_script.lds
--- old/limine-10.6.0/picoefi/ia32/link_script.lds      2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/picoefi/ia32/link_script.lds      2026-01-05 
07:03:43.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2021-2025 mintsuki and contributors.
+/* Copyright (C) 2021-2026 Mintsuki and contributors.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/picoefi/ia32/reloc.c 
new/limine-10.6.1/picoefi/ia32/reloc.c
--- old/limine-10.6.0/picoefi/ia32/reloc.c      2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/picoefi/ia32/reloc.c      2026-01-05 07:03:43.000000000 
+0100
@@ -1,7 +1,7 @@
 /* reloc_ia32.c - position independent x86 ELF shared object relocator
    Copyright (C) 1999 Hewlett-Packard Co.
    Contributed by David Mosberger <[email protected]>.
-   Copyright (C) 2022-2025 mintsuki
+   Copyright (C) 2022-2026 Mintsuki and contributors.
 
     All rights reserved.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/picoefi/loongarch64/entry.S 
new/limine-10.6.1/picoefi/loongarch64/entry.S
--- old/limine-10.6.0/picoefi/loongarch64/entry.S       2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/picoefi/loongarch64/entry.S       2026-01-05 
07:03:43.000000000 +0100
@@ -3,7 +3,7 @@
  *
  * Copyright (C) 2021 Loongson Technology Corporation Limited. 
<[email protected]>
  * Copyright (C) 2014 Linaro Ltd. <[email protected]>
- * Copyright (C) 2022-2025 mintsuki
+ * Copyright (C) 2022-2026 Mintsuki and contributors.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/picoefi/loongarch64/link_script.lds 
new/limine-10.6.1/picoefi/loongarch64/link_script.lds
--- old/limine-10.6.0/picoefi/loongarch64/link_script.lds       2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/picoefi/loongarch64/link_script.lds       2026-01-05 
07:03:43.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2021-2025 mintsuki and contributors.
+/* Copyright (C) 2021-2026 Mintsuki and contributors.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/picoefi/loongarch64/reloc.c 
new/limine-10.6.1/picoefi/loongarch64/reloc.c
--- old/limine-10.6.0/picoefi/loongarch64/reloc.c       2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/picoefi/loongarch64/reloc.c       2026-01-05 
07:03:43.000000000 +0100
@@ -3,7 +3,7 @@
    Copyright (C) 2014 Linaro Ltd. <[email protected]>
    Copyright (C) 1999 Hewlett-Packard Co.
     Contributed by David Mosberger <[email protected]>.
-   Copyright (C) 2025 mintsuki and contributors
+   Copyright (C) 2026 Mintsuki and contributors.
 
     All rights reserved.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/picoefi/riscv64/entry.S 
new/limine-10.6.1/picoefi/riscv64/entry.S
--- old/limine-10.6.0/picoefi/riscv64/entry.S   2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/picoefi/riscv64/entry.S   2026-01-05 07:03:43.000000000 
+0100
@@ -3,7 +3,7 @@
  *
  * Copyright (C) 2014 Linaro Ltd. <[email protected]>
  * Copyright (C) 2018 Alexander Graf <[email protected]>
- * Copyright (C) 2022-2025 mintsuki
+ * Copyright (C) 2022-2026 Mintsuki and contributors.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/picoefi/riscv64/link_script.lds 
new/limine-10.6.1/picoefi/riscv64/link_script.lds
--- old/limine-10.6.0/picoefi/riscv64/link_script.lds   2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/picoefi/riscv64/link_script.lds   2026-01-05 
07:03:43.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2021-2025 mintsuki and contributors.
+/* Copyright (C) 2021-2026 Mintsuki and contributors.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/picoefi/riscv64/reloc.c 
new/limine-10.6.1/picoefi/riscv64/reloc.c
--- old/limine-10.6.0/picoefi/riscv64/reloc.c   2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/picoefi/riscv64/reloc.c   2026-01-05 07:03:43.000000000 
+0100
@@ -3,7 +3,7 @@
    Copyright (C) 2014 Linaro Ltd. <[email protected]>
    Copyright (C) 1999 Hewlett-Packard Co.
        Contributed by David Mosberger <[email protected]>.
-   Copyright (C) 2022-2025 mintsuki
+   Copyright (C) 2022-2026 Mintsuki and contributors.
 
     All rights reserved.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/picoefi/x86_64/entry.S 
new/limine-10.6.1/picoefi/x86_64/entry.S
--- old/limine-10.6.0/picoefi/x86_64/entry.S    2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/picoefi/x86_64/entry.S    2026-01-05 07:03:43.000000000 
+0100
@@ -3,7 +3,7 @@
        Contributed by David Mosberger <[email protected]>.
    Copyright (C) 2005 Intel Co.
        Contributed by Fenghua Yu <[email protected]>.
-   Copyright (C) 2022-2025 mintsuki
+   Copyright (C) 2022-2026 Mintsuki and contributors.
 
     All rights reserved.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/picoefi/x86_64/link_script.lds 
new/limine-10.6.1/picoefi/x86_64/link_script.lds
--- old/limine-10.6.0/picoefi/x86_64/link_script.lds    2025-12-28 
15:18:08.000000000 +0100
+++ new/limine-10.6.1/picoefi/x86_64/link_script.lds    2026-01-05 
07:03:43.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2021-2025 mintsuki and contributors.
+/* Copyright (C) 2021-2026 Mintsuki and contributors.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/picoefi/x86_64/reloc.c 
new/limine-10.6.1/picoefi/x86_64/reloc.c
--- old/limine-10.6.0/picoefi/x86_64/reloc.c    2025-12-28 15:18:08.000000000 
+0100
+++ new/limine-10.6.1/picoefi/x86_64/reloc.c    2026-01-05 07:03:43.000000000 
+0100
@@ -3,7 +3,7 @@
     Contributed by David Mosberger <[email protected]>.
    Copyright (C) 2005 Intel Co.
     Contributed by Fenghua Yu <[email protected]>.
-   Copyright (C) 2022-2025 mintsuki
+   Copyright (C) 2022-2026 Mintsuki and contributors.
 
     All rights reserved.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/timestamps new/limine-10.6.1/timestamps
--- old/limine-10.6.0/timestamps        2025-12-28 15:18:09.000000000 +0100
+++ new/limine-10.6.1/timestamps        2026-01-05 07:03:44.000000000 +0100
@@ -1,3 +1,3 @@
-REGEN_DATE="December 2025"
-SOURCE_DATE_EPOCH="1766930472"
-SOURCE_DATE_EPOCH_TOUCH="202512281501"
+REGEN_DATE="January 2026"
+SOURCE_DATE_EPOCH="1767591944"
+SOURCE_DATE_EPOCH_TOUCH="202601050645"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.6.0/version new/limine-10.6.1/version
--- old/limine-10.6.0/version   2025-12-28 15:18:12.000000000 +0100
+++ new/limine-10.6.1/version   2026-01-05 07:03:47.000000000 +0100
@@ -1 +1 @@
-10.6.0
+10.6.1

Reply via email to