提交 bf854d65 编写于 作者: A Adam Lackorzynski 提交者: Anthony Liguori

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: NAdam Lackorzynski <adam@os.inf.tu-dresden.de>
Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
上级 3f3d583e
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册