grub segfaults if initrd is specified before specifying the kernel. The problem is the initrd module sees that kernel is not specified and takes the fail path. In the fail path it checks if anything has be malloc'ed. Unfortunately the variable that it looks to check for is a uninitialized stack variable. The stack variable can incorrectly indicate something is malloced, which leads the module to free some unallocated memory. This patch fixes the problem by initializing the stack variable.
Signed-off-by: Ram Pai <linux...@us.ibm.com> --- grub-core/loader/powerpc/ieee1275/linux.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/grub-core/loader/powerpc/ieee1275/linux.c b/grub-core/loader/powerpc/ieee1275/linux.c index 3d6a61e..7f85eab 100644 --- a/grub-core/loader/powerpc/ieee1275/linux.c +++ b/grub-core/loader/powerpc/ieee1275/linux.c @@ -335,6 +335,10 @@ grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)), grub_addr_t addr; struct grub_linux_initrd_context initrd_ctx; + // initialize, otherwise the fail path will try to + // free up data and segfault + initrd_ctx.components = NULL; + if (argc == 0) { grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected")); -- 1.8.5.3 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel