Commit bf854d65 authored by Adam Lackorzynski's avatar Adam Lackorzynski Committed by Anthony Liguori
Browse files

multiboot: Limit number of multiboot modules



Add size checks to avoid overwriting the multiboot structure
when too many modules are loaded.

Patchworks-ID: 35700
Signed-off-by: default avatarAdam Lackorzynski <adam@os.inf.tu-dresden.de>
Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
parent 3f3d583e
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -702,6 +702,10 @@ static int load_multiboot(void *fw_cfg,
        int mb_mod_count = 0;

        do {
            if (mb_mod_info + 16 > mb_mod_cmdline) {
                printf("WARNING: Too many modules loaded, aborting.\n");
                break;
            }
            next_initrd = strchr(initrd_filename, ',');
            if (next_initrd)
                *next_initrd = '\0';
@@ -712,8 +716,11 @@ static int load_multiboot(void *fw_cfg,
                    initrd_filename);
            stl_p(bootinfo + mb_mod_info + 8, mb_bootinfo + mb_mod_cmdline); /* string */
            mb_mod_cmdline += strlen(initrd_filename) + 1;
            if (mb_mod_cmdline > sizeof(bootinfo))
            if (mb_mod_cmdline > sizeof(bootinfo)) {
                mb_mod_cmdline = sizeof(bootinfo);
                printf("WARNING: Too many module cmdlines loaded, aborting.\n");
                break;
            }
            if ((next_space = strchr(initrd_filename, ' ')))
                *next_space = '\0';
#ifdef DEBUG_MULTIBOOT