import grub2-2.02-90.el8_3.1
This commit is contained in:
parent
d0cbb56535
commit
fa384bc6b3
@ -1,7 +1,7 @@
|
||||
From 0bde74dcdf9de128317a28796e2690f92214db0d Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Wed, 15 Apr 2020 15:45:02 -0400
|
||||
Subject: [PATCH 281/314] yylex: Make lexer fatal errors actually be fatal
|
||||
Subject: [PATCH] yylex: Make lexer fatal errors actually be fatal
|
||||
|
||||
When presented with a command that can't be tokenized to anything
|
||||
smaller than YYLMAX characters, the parser calls YY_FATAL_ERROR(errmsg),
|
||||
@ -65,6 +65,3 @@ index 7b44c37b76f..b7203c82309 100644
|
||||
} while (0)
|
||||
|
||||
#define COPY(str, hint) \
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 42b76ec749c30cb11cad7c070d0b03a7d4f1f7d6 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Mon, 15 Jun 2020 10:58:42 -0400
|
||||
Subject: [PATCH 282/314] safemath: Add some arithmetic primitives that check
|
||||
for overflow
|
||||
Subject: [PATCH] safemath: Add some arithmetic primitives that check for
|
||||
overflow
|
||||
|
||||
This adds a new header, include/grub/safemath.h, that includes easy to
|
||||
use wrappers for __builtin_{add,sub,mul}_overflow() declared like:
|
||||
@ -122,6 +122,3 @@ index f3c20edc844..f8bd9116480 100644
|
||||
* GNU Make
|
||||
* GNU Bison 2.3 or later
|
||||
* GNU gettext 0.17 or later
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 832189364ee0c85a94f670952c951252e54d3d1c Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Mon, 15 Jun 2020 12:15:29 -0400
|
||||
Subject: [PATCH 283/314] calloc: Make sure we always have an overflow-checking
|
||||
Subject: [PATCH] calloc: Make sure we always have an overflow-checking
|
||||
calloc() available
|
||||
|
||||
This tries to make sure that everywhere in this source tree, we always have
|
||||
@ -13,13 +13,13 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
Upstream-commit-id: 79e51ab7a9a
|
||||
---
|
||||
grub-core/kern/emu/misc.c | 12 +++++++++
|
||||
grub-core/kern/emu/mm.c | 10 ++++++++
|
||||
grub-core/kern/mm.c | 40 ++++++++++++++++++++++++++++++
|
||||
grub-core/lib/libgcrypt_wrap/mem.c | 11 ++++++--
|
||||
grub-core/lib/posix_wrap/stdlib.h | 8 +++++-
|
||||
grub-core/kern/emu/misc.c | 12 ++++++++++++
|
||||
grub-core/kern/emu/mm.c | 10 ++++++++++
|
||||
grub-core/kern/mm.c | 40 ++++++++++++++++++++++++++++++++++++++
|
||||
grub-core/lib/libgcrypt_wrap/mem.c | 11 +++++++++--
|
||||
grub-core/lib/posix_wrap/stdlib.h | 8 +++++++-
|
||||
include/grub/emu/misc.h | 1 +
|
||||
include/grub/mm.h | 6 +++++
|
||||
include/grub/mm.h | 6 ++++++
|
||||
7 files changed, 85 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/grub-core/kern/emu/misc.c b/grub-core/kern/emu/misc.c
|
||||
@ -238,6 +238,3 @@ index 28e2e53eb32..9c38dd3ca5d 100644
|
||||
void *EXPORT_FUNC(grub_debug_malloc) (const char *file, int line,
|
||||
grub_size_t size);
|
||||
void *EXPORT_FUNC(grub_debug_zalloc) (const char *file, int line,
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 778ddaeac8a8a821f6844ec8b8c404d0e437991f Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Mon, 15 Jun 2020 12:26:01 -0400
|
||||
Subject: [PATCH 284/314] calloc: Use calloc() at most places
|
||||
Subject: [PATCH] calloc: Use calloc() at most places
|
||||
|
||||
This modifies most of the places we do some form of:
|
||||
|
||||
@ -23,91 +23,91 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
Upstream-commit-id: 48eeedf1e4b
|
||||
---
|
||||
grub-core/bus/usb/usbhub.c | 8 ++--
|
||||
grub-core/commands/efi/lsefisystab.c | 3 +-
|
||||
grub-core/commands/legacycfg.c | 6 +--
|
||||
grub-core/bus/usb/usbhub.c | 8 +++---
|
||||
grub-core/commands/efi/lsefisystab.c | 3 ++-
|
||||
grub-core/commands/legacycfg.c | 6 ++---
|
||||
grub-core/commands/menuentry.c | 2 +-
|
||||
grub-core/commands/nativedisk.c | 2 +-
|
||||
grub-core/commands/parttool.c | 12 ++++--
|
||||
grub-core/commands/parttool.c | 12 ++++++---
|
||||
grub-core/commands/regexp.c | 2 +-
|
||||
grub-core/commands/search_wrap.c | 2 +-
|
||||
grub-core/disk/diskfilter.c | 4 +-
|
||||
grub-core/disk/diskfilter.c | 4 +--
|
||||
grub-core/disk/ieee1275/ofdisk.c | 2 +-
|
||||
grub-core/disk/ldm.c | 14 +++----
|
||||
grub-core/disk/ldm.c | 14 +++++-----
|
||||
grub-core/disk/luks.c | 2 +-
|
||||
grub-core/disk/lvm.c | 8 ++--
|
||||
grub-core/disk/lvm.c | 8 +++---
|
||||
grub-core/disk/xen/xendisk.c | 2 +-
|
||||
grub-core/efiemu/loadcore.c | 2 +-
|
||||
grub-core/efiemu/mm.c | 6 +--
|
||||
grub-core/font/font.c | 3 +-
|
||||
grub-core/fs/affs.c | 6 +--
|
||||
grub-core/fs/btrfs.c | 4 +-
|
||||
grub-core/efiemu/mm.c | 6 ++---
|
||||
grub-core/font/font.c | 3 +--
|
||||
grub-core/fs/affs.c | 6 ++---
|
||||
grub-core/fs/btrfs.c | 4 +--
|
||||
grub-core/fs/hfs.c | 2 +-
|
||||
grub-core/fs/hfsplus.c | 45 +++++++++++++++--------
|
||||
grub-core/fs/hfsplus.c | 45 ++++++++++++++++++++-----------
|
||||
grub-core/fs/iso9660.c | 2 +-
|
||||
grub-core/fs/ntfs.c | 4 +-
|
||||
grub-core/fs/ntfs.c | 4 +--
|
||||
grub-core/fs/sfs.c | 2 +-
|
||||
grub-core/fs/tar.c | 2 +-
|
||||
grub-core/fs/udf.c | 4 +-
|
||||
grub-core/fs/zfs/zfs.c | 4 +-
|
||||
grub-core/fs/udf.c | 4 +--
|
||||
grub-core/fs/zfs/zfs.c | 4 +--
|
||||
grub-core/gfxmenu/gui_string_util.c | 2 +-
|
||||
grub-core/gfxmenu/widget-box.c | 4 +-
|
||||
grub-core/gfxmenu/widget-box.c | 4 +--
|
||||
grub-core/io/gzio.c | 2 +-
|
||||
grub-core/kern/efi/efi.c | 33 ++++++++++++++---
|
||||
grub-core/kern/efi/efi.c | 33 ++++++++++++++++++-----
|
||||
grub-core/kern/emu/hostdisk.c | 2 +-
|
||||
grub-core/kern/fs.c | 2 +-
|
||||
grub-core/kern/misc.c | 2 +-
|
||||
grub-core/kern/parser.c | 2 +-
|
||||
grub-core/kern/uboot/uboot.c | 2 +-
|
||||
grub-core/lib/libgcrypt/cipher/ac.c | 8 ++--
|
||||
grub-core/lib/libgcrypt/cipher/primegen.c | 4 +-
|
||||
grub-core/lib/libgcrypt/cipher/pubkey.c | 4 +-
|
||||
grub-core/lib/libgcrypt/cipher/ac.c | 8 +++---
|
||||
grub-core/lib/libgcrypt/cipher/primegen.c | 4 +--
|
||||
grub-core/lib/libgcrypt/cipher/pubkey.c | 4 +--
|
||||
grub-core/lib/priority_queue.c | 2 +-
|
||||
grub-core/lib/reed_solomon.c | 7 ++--
|
||||
grub-core/lib/relocator.c | 10 ++---
|
||||
grub-core/lib/reed_solomon.c | 7 +++--
|
||||
grub-core/lib/relocator.c | 10 +++----
|
||||
grub-core/loader/arm/linux.c | 2 +-
|
||||
grub-core/loader/efi/chainloader.c | 11 ++++--
|
||||
grub-core/loader/efi/chainloader.c | 11 +++++---
|
||||
grub-core/loader/i386/bsdXX.c | 2 +-
|
||||
grub-core/loader/i386/xnu.c | 4 +-
|
||||
grub-core/loader/i386/xnu.c | 4 +--
|
||||
grub-core/loader/macho.c | 2 +-
|
||||
grub-core/loader/multiboot_elfxx.c | 2 +-
|
||||
grub-core/loader/xnu.c | 2 +-
|
||||
grub-core/mmap/mmap.c | 4 +-
|
||||
grub-core/mmap/mmap.c | 4 +--
|
||||
grub-core/net/bootp.c | 2 +-
|
||||
grub-core/net/dns.c | 10 ++---
|
||||
grub-core/net/net.c | 4 +-
|
||||
grub-core/normal/charset.c | 10 ++---
|
||||
grub-core/normal/cmdline.c | 14 +++----
|
||||
grub-core/normal/menu_entry.c | 14 +++----
|
||||
grub-core/normal/menu_text.c | 4 +-
|
||||
grub-core/normal/term.c | 4 +-
|
||||
grub-core/osdep/linux/getroot.c | 6 +--
|
||||
grub-core/net/dns.c | 10 +++----
|
||||
grub-core/net/net.c | 4 +--
|
||||
grub-core/normal/charset.c | 10 +++----
|
||||
grub-core/normal/cmdline.c | 14 +++++-----
|
||||
grub-core/normal/menu_entry.c | 14 +++++-----
|
||||
grub-core/normal/menu_text.c | 4 +--
|
||||
grub-core/normal/term.c | 4 +--
|
||||
grub-core/osdep/linux/getroot.c | 6 ++---
|
||||
grub-core/osdep/unix/config.c | 2 +-
|
||||
grub-core/osdep/windows/getroot.c | 2 +-
|
||||
grub-core/osdep/windows/hostdisk.c | 4 +-
|
||||
grub-core/osdep/windows/hostdisk.c | 4 +--
|
||||
grub-core/osdep/windows/init.c | 2 +-
|
||||
grub-core/osdep/windows/platform.c | 4 +-
|
||||
grub-core/osdep/windows/platform.c | 4 +--
|
||||
grub-core/osdep/windows/relpath.c | 2 +-
|
||||
grub-core/partmap/gpt.c | 2 +-
|
||||
grub-core/partmap/msdos.c | 2 +-
|
||||
grub-core/script/execute.c | 2 +-
|
||||
grub-core/tests/fake_input.c | 2 +-
|
||||
grub-core/tests/video_checksum.c | 6 +--
|
||||
grub-core/tests/video_checksum.c | 6 ++---
|
||||
grub-core/video/capture.c | 2 +-
|
||||
grub-core/video/emu/sdl.c | 2 +-
|
||||
grub-core/video/i386/pc/vga.c | 2 +-
|
||||
grub-core/video/readers/png.c | 2 +-
|
||||
util/getroot.c | 2 +-
|
||||
util/grub-file.c | 2 +-
|
||||
util/grub-fstest.c | 4 +-
|
||||
util/grub-fstest.c | 4 +--
|
||||
util/grub-install-common.c | 2 +-
|
||||
util/grub-install.c | 4 +-
|
||||
util/grub-mkimagexx.c | 6 +--
|
||||
util/grub-mkrescue.c | 4 +-
|
||||
util/grub-install.c | 4 +--
|
||||
util/grub-mkimagexx.c | 6 ++---
|
||||
util/grub-mkrescue.c | 4 +--
|
||||
util/grub-mkstandalone.c | 2 +-
|
||||
util/grub-pe2elf.c | 12 +++---
|
||||
util/grub-probe.c | 4 +-
|
||||
include/grub/unicode.h | 4 +-
|
||||
util/grub-pe2elf.c | 12 ++++-----
|
||||
util/grub-probe.c | 4 +--
|
||||
include/grub/unicode.h | 4 +--
|
||||
85 files changed, 231 insertions(+), 191 deletions(-)
|
||||
|
||||
diff --git a/grub-core/bus/usb/usbhub.c b/grub-core/bus/usb/usbhub.c
|
||||
@ -1940,6 +1940,3 @@ index a0403e91f9a..4de986a8576 100644
|
||||
if (!out->combining_ptr)
|
||||
return;
|
||||
grub_memcpy (out->combining_ptr, in->combining_ptr,
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 05c062003cff8dbbf1b394fa836378e88522e29c Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Mon, 15 Jun 2020 12:28:27 -0400
|
||||
Subject: [PATCH 285/314] malloc: Use overflow checking primitives where we do
|
||||
complex allocations
|
||||
Subject: [PATCH] malloc: Use overflow checking primitives where we do complex
|
||||
allocations
|
||||
|
||||
This attempts to fix the places where we do the following where
|
||||
arithmetic_expr may include unvalidated data:
|
||||
@ -30,29 +30,29 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
Upstream-commit-id: 5fb2befbf04
|
||||
---
|
||||
grub-core/commands/legacycfg.c | 29 +++++++++++++++----
|
||||
grub-core/commands/wildcard.c | 36 ++++++++++++++++++++----
|
||||
grub-core/disk/ldm.c | 32 +++++++++++++++------
|
||||
grub-core/font/font.c | 7 ++++-
|
||||
grub-core/fs/btrfs.c | 29 +++++++++++++------
|
||||
grub-core/fs/ext2.c | 10 ++++++-
|
||||
grub-core/fs/iso9660.c | 51 ++++++++++++++++++++++++----------
|
||||
grub-core/fs/sfs.c | 27 ++++++++++++++----
|
||||
grub-core/fs/squash4.c | 45 ++++++++++++++++++++++--------
|
||||
grub-core/fs/udf.c | 41 +++++++++++++++++----------
|
||||
grub-core/fs/xfs.c | 11 +++++---
|
||||
grub-core/fs/zfs/zfs.c | 22 ++++++++++-----
|
||||
grub-core/fs/zfs/zfscrypt.c | 7 ++++-
|
||||
grub-core/lib/arg.c | 20 +++++++++++--
|
||||
grub-core/loader/i386/bsd.c | 8 +++++-
|
||||
grub-core/net/dns.c | 9 +++++-
|
||||
grub-core/normal/charset.c | 10 +++++--
|
||||
grub-core/normal/cmdline.c | 14 ++++++++--
|
||||
grub-core/normal/menu_entry.c | 13 +++++++--
|
||||
grub-core/script/argv.c | 16 +++++++++--
|
||||
grub-core/script/lexer.c | 21 ++++++++++++--
|
||||
grub-core/video/bitmap.c | 25 +++++++++++------
|
||||
grub-core/video/readers/png.c | 13 +++++++--
|
||||
grub-core/commands/legacycfg.c | 29 +++++++++++++++++++-----
|
||||
grub-core/commands/wildcard.c | 36 ++++++++++++++++++++++++-----
|
||||
grub-core/disk/ldm.c | 32 ++++++++++++++++++--------
|
||||
grub-core/font/font.c | 7 +++++-
|
||||
grub-core/fs/btrfs.c | 29 ++++++++++++++++--------
|
||||
grub-core/fs/ext2.c | 10 ++++++++-
|
||||
grub-core/fs/iso9660.c | 51 +++++++++++++++++++++++++++++-------------
|
||||
grub-core/fs/sfs.c | 27 +++++++++++++++++-----
|
||||
grub-core/fs/squash4.c | 45 ++++++++++++++++++++++++++++---------
|
||||
grub-core/fs/udf.c | 41 +++++++++++++++++++++------------
|
||||
grub-core/fs/xfs.c | 11 +++++----
|
||||
grub-core/fs/zfs/zfs.c | 22 ++++++++++++------
|
||||
grub-core/fs/zfs/zfscrypt.c | 7 +++++-
|
||||
grub-core/lib/arg.c | 20 +++++++++++++++--
|
||||
grub-core/loader/i386/bsd.c | 8 ++++++-
|
||||
grub-core/net/dns.c | 9 +++++++-
|
||||
grub-core/normal/charset.c | 10 +++++++--
|
||||
grub-core/normal/cmdline.c | 14 ++++++++++--
|
||||
grub-core/normal/menu_entry.c | 13 +++++++++--
|
||||
grub-core/script/argv.c | 16 +++++++++++--
|
||||
grub-core/script/lexer.c | 21 ++++++++++++++---
|
||||
grub-core/video/bitmap.c | 25 +++++++++++++--------
|
||||
grub-core/video/readers/png.c | 13 +++++++++--
|
||||
23 files changed, 383 insertions(+), 113 deletions(-)
|
||||
|
||||
diff --git a/grub-core/commands/legacycfg.c b/grub-core/commands/legacycfg.c
|
||||
@ -1318,6 +1318,3 @@ index e85df3c1b04..719e647e44f 100644
|
||||
|
||||
#ifndef GRUB_CPU_WORDS_BIGENDIAN
|
||||
if (data->is_16bit || data->is_gray || data->is_palette)
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From c37e76df9c58c3f170e838c42527ef8544bf4468 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Sat, 4 Jul 2020 12:25:09 -0400
|
||||
Subject: [PATCH 286/314] iso9660: Don't leak memory on realloc() failures
|
||||
Subject: [PATCH] iso9660: Don't leak memory on realloc() failures
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
@ -64,6 +64,3 @@ index f45841e2b47..6fc9302bce3 100644
|
||||
/* In pos + 1 the length of the `Component Record' is
|
||||
stored. */
|
||||
pos += entry->data[pos + 1] + 2;
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 0b3c4b90e1b928a2606f0801e6e872dd6cb85c42 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
Date: Tue, 7 Jul 2020 15:36:26 +0200
|
||||
Subject: [PATCH 287/314] font: Do not load more than one NAME section
|
||||
Subject: [PATCH] font: Do not load more than one NAME section
|
||||
|
||||
The GRUB font file can have one NAME section only. Though if somebody
|
||||
crafts a broken font file with many NAME sections and loads it then the
|
||||
@ -33,6 +33,3 @@ index d63354fb51b..a7b955a1a74 100644
|
||||
font->name = read_section_as_string (§ion);
|
||||
if (!font->name)
|
||||
goto fail;
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 583a48bca23f7c4e0d691f0e6d065dac61bbfca1 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alexey Makhalov <amakhalov@vmware.com>
|
||||
Date: Wed, 8 Jul 2020 20:41:56 +0000
|
||||
Subject: [PATCH 288/314] gfxmenu: Fix double free in load_image()
|
||||
Subject: [PATCH] gfxmenu: Fix double free in load_image()
|
||||
|
||||
self->bitmap should be zeroed after free. Otherwise, there is a chance
|
||||
to double free (USE_AFTER_FREE) it later in rescale_image().
|
||||
@ -31,6 +31,3 @@ index 29784ed2d9a..6b2e976f16e 100644
|
||||
if (self->raw_bitmap)
|
||||
grub_video_bitmap_destroy (self->raw_bitmap);
|
||||
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,8 +1,7 @@
|
||||
From 301523f584d9aa624424c68ab3f085a9b7eca417 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alexey Makhalov <amakhalov@vmware.com>
|
||||
Date: Wed, 8 Jul 2020 21:30:43 +0000
|
||||
Subject: [PATCH 289/314] xnu: Fix double free in
|
||||
grub_xnu_devprop_add_property()
|
||||
Subject: [PATCH] xnu: Fix double free in grub_xnu_devprop_add_property()
|
||||
|
||||
grub_xnu_devprop_add_property() should not free utf8 and utf16 as it get
|
||||
allocated and freed in the caller.
|
||||
@ -52,6 +51,3 @@ index ee0eaadc4ee..c760db30fc0 100644
|
||||
grub_list_push (GRUB_AS_LIST_P (&dev->properties),
|
||||
GRUB_AS_LIST (prop));
|
||||
return GRUB_ERR_NONE;
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 656e3376d52c7244edac9264454c0fadac835749 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
||||
Date: Thu, 9 Jul 2020 03:05:23 +0000
|
||||
Subject: [PATCH 290/314] lzma: Make sure we don't dereference past array
|
||||
Subject: [PATCH] lzma: Make sure we don't dereference past array
|
||||
|
||||
The two dimensional array p->posSlotEncoder[4][64] is being dereferenced
|
||||
using the GetLenToPosState() macro which checks if len is less than 5,
|
||||
@ -47,6 +47,3 @@ index f2ec04a8c28..753e56a95e3 100644
|
||||
|
||||
if (posSlot >= kStartPosModelIndex)
|
||||
{
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 6df814d4f43a47ffe2b354b9fa683ed4022fa5f1 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
||||
Date: Tue, 7 Jul 2020 15:12:25 -0400
|
||||
Subject: [PATCH 291/314] term: Fix overflow on user inputs
|
||||
Subject: [PATCH] term: Fix overflow on user inputs
|
||||
|
||||
This requires a very weird input from the serial interface but can cause
|
||||
an overflow in input_buf (keys) overwriting the next variable (npending)
|
||||
@ -61,6 +61,3 @@ index 537a5c0cb0b..44d0b3b19fb 100644
|
||||
|
||||
#if defined(__powerpc__) && defined(GRUB_MACHINE_IEEE1275)
|
||||
if (data->npending == 1 && data->input_buf[0] == GRUB_TERM_ESC
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 1864839f0e0eeb2b93a5b20e4e36f9b80abc3c23 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
||||
Date: Tue, 7 Jul 2020 22:02:31 -0400
|
||||
Subject: [PATCH 292/314] udf: Fix memory leak
|
||||
Subject: [PATCH] udf: Fix memory leak
|
||||
|
||||
Fixes: CID 73796
|
||||
|
||||
@ -51,6 +51,3 @@ index be41b48f913..6670beb5665 100644
|
||||
|
||||
if (filename && hook (filename, type, child, hook_data))
|
||||
{
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 9b970d31434e3fd6a8de36a6adef5cc721b265a8 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
||||
Date: Fri, 26 Jun 2020 10:51:43 -0400
|
||||
Subject: [PATCH 293/314] multiboot2: Fix memory leak if
|
||||
grub_create_loader_cmdline() fails
|
||||
Subject: [PATCH] multiboot2: Fix memory leak if grub_create_loader_cmdline()
|
||||
fails
|
||||
|
||||
Fixes: CID 292468
|
||||
|
||||
@ -42,6 +42,3 @@ index 54078455e2f..872dcd42e97 100644
|
||||
|
||||
if (modules_last)
|
||||
modules_last->next = newmod;
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 0ecb57c7bc38cb5de4a1b23909203a3331f5c84b Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alexey Makhalov <amakhalov@vmware.com>
|
||||
Date: Thu, 9 Jul 2020 08:10:40 +0000
|
||||
Subject: [PATCH 294/314] tftp: Do not use priority queue
|
||||
Subject: [PATCH] tftp: Do not use priority queue
|
||||
|
||||
There is not need to reassemble the order of blocks. Per RFC 1350,
|
||||
server must wait for the ACK, before sending next block. Data packets
|
||||
@ -31,7 +31,7 @@ Signed-off-by: Alexey Makhalov <amakhalov@vmware.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
Upstream-commit-id: 8316694c4f7
|
||||
---
|
||||
grub-core/net/tftp.c | 174 ++++++++++++++-----------------------------
|
||||
grub-core/net/tftp.c | 174 ++++++++++++++++-----------------------------------
|
||||
1 file changed, 54 insertions(+), 120 deletions(-)
|
||||
|
||||
diff --git a/grub-core/net/tftp.c b/grub-core/net/tftp.c
|
||||
@ -284,6 +284,3 @@ index e267af354f4..79c16f9b041 100644
|
||||
grub_free (data);
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 320fe69ffff39f90169f793402de4d4223a1a64c Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alexey Makhalov <amakhalov@vmware.com>
|
||||
Date: Wed, 15 Jul 2020 06:42:37 +0000
|
||||
Subject: [PATCH 295/314] relocator: Protect grub_relocator_alloc_chunk_addr()
|
||||
input args against integer underflow/overflow
|
||||
Subject: [PATCH] relocator: Protect grub_relocator_alloc_chunk_addr() input
|
||||
args against integer underflow/overflow
|
||||
|
||||
Use arithmetic macros from safemath.h to accomplish it. In this commit,
|
||||
I didn't want to be too paranoid to check every possible math equation
|
||||
@ -145,6 +145,3 @@ index dc7d5409e1e..2bf02489bad 100644
|
||||
grub_xnu_heap_size += size;
|
||||
grub_dprintf ("xnu", "val=%p\n", *src);
|
||||
return GRUB_ERR_NONE;
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 93d697a46b43ee13e0343c79777af5ce23c313b7 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alexey Makhalov <amakhalov@vmware.com>
|
||||
Date: Wed, 8 Jul 2020 01:44:38 +0000
|
||||
Subject: [PATCH 296/314] relocator: Protect grub_relocator_alloc_chunk_align()
|
||||
Subject: [PATCH] relocator: Protect grub_relocator_alloc_chunk_align()
|
||||
max_addr against integer underflow
|
||||
|
||||
This commit introduces integer underflow mitigation in max_addr calculation
|
||||
@ -20,7 +20,7 @@ Signed-off-by: Alexey Makhalov <amakhalov@vmware.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
Upstream-commit-id: 10498c8ba17
|
||||
---
|
||||
grub-core/lib/i386/relocator.c | 28 ++++++++++----------------
|
||||
grub-core/lib/i386/relocator.c | 28 +++++++++++-----------------
|
||||
grub-core/lib/mips/relocator.c | 6 ++----
|
||||
grub-core/lib/powerpc/relocator.c | 6 ++----
|
||||
grub-core/lib/x86_64/efi/relocator.c | 7 +++----
|
||||
@ -29,10 +29,10 @@ Upstream-commit-id: 10498c8ba17
|
||||
grub-core/loader/i386/pc/linux.c | 6 ++----
|
||||
grub-core/loader/mips/linux.c | 9 +++------
|
||||
grub-core/loader/multiboot.c | 2 +-
|
||||
grub-core/loader/multiboot_elfxx.c | 10 ++++-----
|
||||
grub-core/loader/multiboot_mbi2.c | 10 ++++-----
|
||||
grub-core/loader/multiboot_elfxx.c | 10 +++++-----
|
||||
grub-core/loader/multiboot_mbi2.c | 10 +++++-----
|
||||
grub-core/loader/xnu_resume.c | 2 +-
|
||||
include/grub/relocator.h | 29 +++++++++++++++++++++++++++
|
||||
include/grub/relocator.h | 29 +++++++++++++++++++++++++++++
|
||||
13 files changed, 69 insertions(+), 58 deletions(-)
|
||||
|
||||
diff --git a/grub-core/lib/i386/relocator.c b/grub-core/lib/i386/relocator.c
|
||||
@ -333,6 +333,3 @@ index 24d8672d22c..1b3bdd92ac6 100644
|
||||
#define GRUB_RELOCATOR_PREFERENCE_NONE 0
|
||||
#define GRUB_RELOCATOR_PREFERENCE_LOW 1
|
||||
#define GRUB_RELOCATOR_PREFERENCE_HIGH 2
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,8 +1,7 @@
|
||||
From 19d627a430f6917afeee167daa9190d1ec83d7b7 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Coulson <chris.coulson@canonical.com>
|
||||
Date: Fri, 10 Jul 2020 11:21:14 +0100
|
||||
Subject: [PATCH 297/314] script: Remove unused fields from
|
||||
grub_script_function struct
|
||||
Subject: [PATCH] script: Remove unused fields from grub_script_function struct
|
||||
|
||||
Signed-off-by: Chris Coulson <chris.coulson@canonical.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
@ -29,6 +28,3 @@ index 360c2be1f05..b382bcf09bc 100644
|
||||
};
|
||||
typedef struct grub_script_function *grub_script_function_t;
|
||||
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
From c1de65c0e3d630f33160d34e1e85925f01966b0d Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Coulson <chris.coulson@canonical.com>
|
||||
Date: Fri, 10 Jul 2020 14:41:45 +0100
|
||||
Subject: [PATCH 298/314] script: Avoid a use-after-free when redefining a
|
||||
function during execution
|
||||
Subject: [PATCH] script: Avoid a use-after-free when redefining a function
|
||||
during execution
|
||||
|
||||
Defining a new function with the same name as a previously defined
|
||||
function causes the grub_script and associated resources for the
|
||||
@ -103,6 +103,3 @@ index 4f0ab8319e3..f80b86b6f15 100644
|
||||
}
|
||||
|
||||
state->scripts = $<scripts>3;
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 7de922a99acd0521b99cd0dd81fe62643ce734a5 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alexey Makhalov <amakhalov@vmware.com>
|
||||
Date: Fri, 17 Jul 2020 05:17:26 +0000
|
||||
Subject: [PATCH 299/314] relocator: Fix grub_relocator_alloc_chunk_align() top
|
||||
memory allocation
|
||||
Subject: [PATCH] relocator: Fix grub_relocator_alloc_chunk_align() top memory
|
||||
allocation
|
||||
|
||||
Current implementation of grub_relocator_alloc_chunk_align()
|
||||
does not allow allocation of the top byte.
|
||||
@ -41,6 +41,3 @@ index 5847aac3643..f2c1944c28d 100644
|
||||
|
||||
#ifdef GRUB_MACHINE_PCBIOS
|
||||
if (min_addr < 0x1000)
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 3a60f2bfd8ab98484a7d8ba52748795f7b225ddc Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Sun, 19 Jul 2020 14:43:31 -0400
|
||||
Subject: [PATCH 300/314] hfsplus: fix two more overflows
|
||||
Subject: [PATCH] hfsplus: fix two more overflows
|
||||
|
||||
Both node->size and node->namelen come from the supplied filesystem,
|
||||
which may be user-supplied. We can't trust them for the math unless we
|
||||
@ -52,6 +52,3 @@ index f1cd72398ec..8b17ebba296 100644
|
||||
if (! filename)
|
||||
return 0;
|
||||
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,8 +1,7 @@
|
||||
From 5c219ca7ec3b481573309245e3b7399c2f19a99c Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Sun, 19 Jul 2020 15:48:20 -0400
|
||||
Subject: [PATCH 301/314] lvm: fix two more potential data-dependent alloc
|
||||
overflows
|
||||
Subject: [PATCH] lvm: fix two more potential data-dependent alloc overflows
|
||||
|
||||
It appears to be possible to make a (possibly invalid) lvm PV with a
|
||||
metadata size field that overflows our type when adding it to the
|
||||
@ -14,7 +13,7 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
Signed-off-by: Darren Kenny <darren.kenny@oracle.com>
|
||||
Upstream-commit-id: 45ec6046ea0
|
||||
---
|
||||
grub-core/disk/lvm.c | 48 ++++++++++++++++++++++++++++++++++++--------
|
||||
grub-core/disk/lvm.c | 48 ++++++++++++++++++++++++++++++++++++++++--------
|
||||
1 file changed, 40 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/grub-core/disk/lvm.c b/grub-core/disk/lvm.c
|
||||
@ -108,6 +107,3 @@ index d1df640b311..ca09d469990 100644
|
||||
if (!lv->fullname)
|
||||
goto lvs_fail;
|
||||
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From d38b6703c0668e5d99e6f00aeef5d1b1d7458f9a Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Sun, 19 Jul 2020 16:08:08 -0400
|
||||
Subject: [PATCH 302/314] emu: make grub_free(NULL) safe
|
||||
Subject: [PATCH] emu: make grub_free(NULL) safe
|
||||
|
||||
The grub_free() implementation in kern/mm.c safely handles NULL
|
||||
pointers, and code at many places depends on this. We don't know that
|
||||
@ -29,6 +29,3 @@ index 145b01d3719..4d1046a219e 100644
|
||||
}
|
||||
|
||||
void *
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,8 +1,7 @@
|
||||
From 3ca105b5d77e292517091da4777484068848da6d Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Sun, 19 Jul 2020 16:53:27 -0400
|
||||
Subject: [PATCH 303/314] efi: fix some malformed device path arithmetic
|
||||
errors.
|
||||
Subject: [PATCH] efi: fix some malformed device path arithmetic errors.
|
||||
|
||||
Several places we take the length of a device path and subtract 4 from
|
||||
it, without ever checking that it's >= 4. There are also cases where
|
||||
@ -19,10 +18,10 @@ code check for and return errors in these cases.
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
Upstream-commit-id: 23e68a83990
|
||||
---
|
||||
grub-core/kern/efi/efi.c | 67 +++++++++++++++++++++++++-----
|
||||
grub-core/loader/efi/chainloader.c | 19 ++++++++-
|
||||
grub-core/loader/i386/xnu.c | 9 ++--
|
||||
include/grub/efi/api.h | 14 ++++---
|
||||
grub-core/kern/efi/efi.c | 67 ++++++++++++++++++++++++++++++++------
|
||||
grub-core/loader/efi/chainloader.c | 19 +++++++++--
|
||||
grub-core/loader/i386/xnu.c | 9 ++---
|
||||
include/grub/efi/api.h | 14 +++++---
|
||||
4 files changed, 88 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
|
||||
@ -247,6 +246,3 @@ index 6c440c61316..a092fddb629 100644
|
||||
|
||||
/* Hardware Device Path. */
|
||||
#define GRUB_EFI_HARDWARE_DEVICE_PATH_TYPE 1
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
From cab9214c4caad2ad95ce8bd456c68bc08def0833 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Coulson <chris.coulson@canonical.com>
|
||||
Date: Wed, 22 Jul 2020 17:06:04 +0100
|
||||
Subject: [PATCH 304/314] Fix a regression caused by "efi: fix some malformed
|
||||
device path arithmetic errors"
|
||||
Subject: [PATCH] Fix a regression caused by "efi: fix some malformed device
|
||||
path arithmetic errors"
|
||||
|
||||
This commit introduced a bogus check inside copy_file_path to
|
||||
determine whether the destination grub_efi_file_path_device_path_t
|
||||
@ -83,6 +83,3 @@ index c2411b6dab2..8b99cf23e9d 100644
|
||||
|
||||
/* Fill the end of device path nodes. */
|
||||
d = GRUB_EFI_NEXT_DEVICE_PATH (d);
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,8 +1,7 @@
|
||||
From 0bfbb0c63ccc73d8508d1a402f53f9f6a64de903 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Burmashev <alexander.burmashev@oracle.com>
|
||||
Date: Wed, 22 Jul 2020 06:04:38 -0700
|
||||
Subject: [PATCH 305/314] update safemath with fallback code for gcc older than
|
||||
5.1
|
||||
Subject: [PATCH] update safemath with fallback code for gcc older than 5.1
|
||||
|
||||
The code used in the header was taken from linux kernel commit
|
||||
f0907827a8a9152aedac2833ed1b674a7b2a44f2. Rasmus Villemoes
|
||||
@ -13,7 +12,7 @@ sources
|
||||
|
||||
Signed-off-by: Alex Burmashev <alexander.burmashev@oracle.com>
|
||||
---
|
||||
include/grub/safemath.h | 119 +++++++++++++++++++++++++++++++++++++++-
|
||||
include/grub/safemath.h | 119 +++++++++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 118 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/grub/safemath.h b/include/grub/safemath.h
|
||||
@ -146,6 +145,3 @@ index c17b89bba17..1ccac276b59 100644
|
||||
#endif
|
||||
|
||||
#endif /* GRUB_SAFEMATH_H */
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 7a7d0278212dde624229dd6da973ccfdf60a7982 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alexey Makhalov <amakhalov@vmware.com>
|
||||
Date: Mon, 20 Jul 2020 23:03:05 +0000
|
||||
Subject: [PATCH 306/314] efi: Fix use-after-free in halt/reboot path
|
||||
Subject: [PATCH] efi: Fix use-after-free in halt/reboot path
|
||||
|
||||
commit 92bfc33db984 ("efi: Free malloc regions on exit")
|
||||
introduced memory freeing in grub_efi_fini(), which is
|
||||
@ -160,6 +160,3 @@ index 7f82a499fd9..b208642821b 100644
|
||||
};
|
||||
|
||||
void EXPORT_FUNC (grub_loader_set) (grub_err_t (*boot) (void),
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From c62652ca26ed1c145d0e820e0f108ce4e61b1f17 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Sun, 19 Jul 2020 17:11:06 -0400
|
||||
Subject: [PATCH 307/314] efi+dhcp: fix some allocation error checking.
|
||||
Subject: [PATCH] efi+dhcp: fix some allocation error checking.
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
@ -35,6 +35,3 @@ index dbef63d8c08..e5c79b748b0 100644
|
||||
}
|
||||
|
||||
if (status != GRUB_EFI_SUCCESS)
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 4436316229bc5b46016d61215b709ec434f4e0d3 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Sun, 19 Jul 2020 17:14:15 -0400
|
||||
Subject: [PATCH 308/314] efi+http: fix some allocation error checking.
|
||||
Subject: [PATCH] efi+http: fix some allocation error checking.
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
@ -37,6 +37,3 @@ index fc8cb25ae0a..26647a50fa4 100644
|
||||
|
||||
file->size = size;
|
||||
file->data = buf;
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,8 +1,7 @@
|
||||
From 9f8ce6fac51e229a18ed2fa3321f7fc3d6d822a6 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Sun, 19 Jul 2020 17:27:00 -0400
|
||||
Subject: [PATCH 309/314] efi/ip[46]_config.c: fix some potential allocation
|
||||
overflows
|
||||
Subject: [PATCH] efi/ip[46]_config.c: fix some potential allocation overflows
|
||||
|
||||
In theory all of this data comes from the firmware stack and it should
|
||||
be safe, but it's better to be paranoid.
|
||||
@ -126,6 +125,3 @@ index e0e00c23d21..1c5415d7185 100644
|
||||
{
|
||||
char *gateway, *destination;
|
||||
grub_uint64_t u64_gateway[2];
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From e5ef076d3188c3389769a3bde72382db9b94dc97 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Thu, 23 Jul 2020 15:02:48 -0400
|
||||
Subject: [PATCH 310/314] Fix up some types for gcc 4.8 compat safemath.h
|
||||
Subject: [PATCH] Fix up some types for gcc 4.8 compat safemath.h
|
||||
|
||||
The compat macros aren't as forgiving as __builtin_*_overflow().
|
||||
|
||||
@ -214,6 +214,3 @@ index 4dfcc31078d..f902b13b44e 100644
|
||||
goto fail;
|
||||
|
||||
n = grub_realloc (out->combining_ptr, sz);
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 0a9a828e88a2e14be684761afe582e7bb286676b Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@debian.org>
|
||||
Date: Fri, 24 Jul 2020 17:18:09 +0100
|
||||
Subject: [PATCH 311/314] efilinux: Fix integer overflows in grub_cmd_initrd
|
||||
Subject: [PATCH] efilinux: Fix integer overflows in grub_cmd_initrd
|
||||
|
||||
These could be triggered by an extremely large number of arguments to
|
||||
the initrd command on 32-bit architectures, or a crafted filesystem with
|
||||
@ -46,6 +46,3 @@ index ea9f5134e67..ade7ab8f573 100644
|
||||
}
|
||||
|
||||
initrd_mem = grub_efi_allocate_pages_max (0x3fffffff, BYTES_TO_PAGES(size));
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,8 +1,7 @@
|
||||
From 9fa474528317c2311e2f2ac0fd626316ef7486d4 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Fri, 24 Jul 2020 13:57:27 -0400
|
||||
Subject: [PATCH 312/314] linux loader: avoid overflow on initrd size
|
||||
calculation
|
||||
Subject: [PATCH] linux loader: avoid overflow on initrd size calculation
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
@ -24,6 +23,3 @@ index c2c7cfcd0fd..61a2e144db0 100644
|
||||
if (!initrd_ctx->components)
|
||||
return grub_errno;
|
||||
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,8 +1,7 @@
|
||||
From 2ba58823b68d5fbf8d625ed6d7e18b09bc556860 Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Dimitri John Ledkov <xnox@ubuntu.com>
|
||||
Date: Wed, 22 Jul 2020 11:31:43 +0100
|
||||
Subject: [PATCH 313/314] linuxefi: fail kernel validation without shim
|
||||
protocol.
|
||||
Subject: [PATCH] linuxefi: fail kernel validation without shim protocol.
|
||||
|
||||
If certificates that signed grub are installed into db, grub can be
|
||||
booted directly. It will then boot any kernel without signature
|
||||
@ -96,6 +95,3 @@ index ade7ab8f573..361e503cb52 100644
|
||||
}
|
||||
|
||||
params = grub_efi_allocate_pages_max (0x3fffffff,
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 9715e08cf30ebd8a24ca27b7c4dda8e949e100df Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@debian.org>
|
||||
Date: Sat, 25 Jul 2020 12:15:37 +0100
|
||||
Subject: [PATCH 314/314] linux: Fix integer overflows in initrd size handling
|
||||
Subject: [PATCH] linux: Fix integer overflows in initrd size handling
|
||||
|
||||
These could be triggered by a crafted filesystem with very large files.
|
||||
|
||||
@ -10,7 +10,7 @@ Fixes: CVE-2020-15707
|
||||
Signed-off-by: Colin Watson <cjwatson@debian.org>
|
||||
Reviewed-by: Jan Setje-Eilers <jan.setjeeilers@oracle.com>
|
||||
---
|
||||
grub-core/loader/linux.c | 74 +++++++++++++++++++++++++++++-----------
|
||||
grub-core/loader/linux.c | 74 +++++++++++++++++++++++++++++++++++-------------
|
||||
1 file changed, 54 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/grub-core/loader/linux.c b/grub-core/loader/linux.c
|
||||
@ -163,6 +163,3 @@ index 61a2e144db0..0953f6d3266 100644
|
||||
ptr = make_header (ptr, initrd_ctx->components[i].newc_name,
|
||||
grub_strlen (initrd_ctx->components[i].newc_name),
|
||||
0100777,
|
||||
--
|
||||
2.26.2
|
||||
|
||||
|
@ -23,7 +23,7 @@ Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
|
||||
1 file changed, 14 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/net/tftp.c b/grub-core/net/tftp.c
|
||||
index 2c52f692b25..4f38d7ef1f7 100644
|
||||
index 79c16f9b041..b9a4b607a3d 100644
|
||||
--- a/grub-core/net/tftp.c
|
||||
+++ b/grub-core/net/tftp.c
|
||||
@@ -183,8 +183,20 @@ tftp_receive (grub_net_udp_socket_t sock __attribute__ ((unused)),
|
||||
|
441
SOURCES/0318-kern-Add-lockdown-support.patch
Normal file
441
SOURCES/0318-kern-Add-lockdown-support.patch
Normal file
@ -0,0 +1,441 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Javier Martinez Canillas <javierm@redhat.com>
|
||||
Date: Fri, 19 Feb 2021 10:33:54 +0100
|
||||
Subject: [PATCH] kern: Add lockdown support
|
||||
|
||||
When the GRUB starts on a secure boot platform, some commands can be
|
||||
used to subvert the protections provided by the verification mechanism and
|
||||
could lead to booting untrusted system.
|
||||
|
||||
To prevent that situation, allow GRUB to be locked down. That way the code
|
||||
may check if GRUB has been locked down and further restrict the commands
|
||||
that are registered or what subset of their functionality could be used.
|
||||
|
||||
The lockdown support adds the following components:
|
||||
|
||||
* The grub_lockdown() function which can be used to lockdown GRUB if,
|
||||
e.g., UEFI Secure Boot is enabled.
|
||||
|
||||
* The grub_is_lockdown() function which can be used to check if the GRUB
|
||||
was locked down.
|
||||
|
||||
* A verifier that flags OS kernels, the GRUB modules, Device Trees and ACPI
|
||||
tables as GRUB_VERIFY_FLAGS_DEFER_AUTH to defer verification to other
|
||||
verifiers. These files are only successfully verified if another registered
|
||||
verifier returns success. Otherwise, the whole verification process fails.
|
||||
|
||||
For example, PE/COFF binaries verification can be done by the shim_lock
|
||||
verifier which validates the signatures using the shim_lock protocol.
|
||||
However, the verification is not deferred directly to the shim_lock verifier.
|
||||
The shim_lock verifier is hooked into the verification process instead.
|
||||
|
||||
* A set of grub_{command,extcmd}_lockdown functions that can be used by
|
||||
code registering command handlers, to only register unsafe commands if
|
||||
the GRUB has not been locked down.
|
||||
|
||||
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/Makefile.core.def | 1 +
|
||||
grub-core/commands/extcmd.c | 23 +++++++++++
|
||||
grub-core/kern/command.c | 24 ++++++++++++
|
||||
grub-core/kern/lockdown.c | 93 +++++++++++++++++++++++++++++++++++++++++++++
|
||||
include/grub/command.h | 5 +++
|
||||
include/grub/extcmd.h | 7 ++++
|
||||
include/grub/lockdown.h | 44 +++++++++++++++++++++
|
||||
conf/Makefile.common | 2 +
|
||||
docs/grub-dev.texi | 27 +++++++++++++
|
||||
docs/grub.texi | 9 +++++
|
||||
grub-core/Makefile.am | 5 ++-
|
||||
11 files changed, 239 insertions(+), 1 deletion(-)
|
||||
create mode 100644 grub-core/kern/lockdown.c
|
||||
create mode 100644 include/grub/lockdown.h
|
||||
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index c8a50b4fcfa..0eb7f312b29 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -197,6 +197,7 @@ kernel = {
|
||||
efi = term/efi/console.c;
|
||||
efi = kern/acpi.c;
|
||||
efi = kern/efi/acpi.c;
|
||||
+ efi = kern/lockdown.c;
|
||||
efi = lib/envblk.c;
|
||||
efi = kern/efi/tpm.c;
|
||||
i386_coreboot = kern/i386/pc/acpi.c;
|
||||
diff --git a/grub-core/commands/extcmd.c b/grub-core/commands/extcmd.c
|
||||
index 69574e2b05b..90a5ca24a64 100644
|
||||
--- a/grub-core/commands/extcmd.c
|
||||
+++ b/grub-core/commands/extcmd.c
|
||||
@@ -19,6 +19,7 @@
|
||||
|
||||
#include <grub/mm.h>
|
||||
#include <grub/list.h>
|
||||
+#include <grub/lockdown.h>
|
||||
#include <grub/misc.h>
|
||||
#include <grub/extcmd.h>
|
||||
#include <grub/script_sh.h>
|
||||
@@ -110,6 +111,28 @@ grub_register_extcmd (const char *name, grub_extcmd_func_t func,
|
||||
summary, description, parser, 1);
|
||||
}
|
||||
|
||||
+static grub_err_t
|
||||
+grub_extcmd_lockdown (grub_extcmd_context_t ctxt __attribute__ ((unused)),
|
||||
+ int argc __attribute__ ((unused)),
|
||||
+ char **argv __attribute__ ((unused)))
|
||||
+{
|
||||
+ return grub_error (GRUB_ERR_ACCESS_DENIED,
|
||||
+ N_("%s: the command is not allowed when lockdown is enforced"),
|
||||
+ ctxt->extcmd->cmd->name);
|
||||
+}
|
||||
+
|
||||
+grub_extcmd_t
|
||||
+grub_register_extcmd_lockdown (const char *name, grub_extcmd_func_t func,
|
||||
+ grub_command_flags_t flags, const char *summary,
|
||||
+ const char *description,
|
||||
+ const struct grub_arg_option *parser)
|
||||
+{
|
||||
+ if (grub_is_lockdown () == GRUB_LOCKDOWN_ENABLED)
|
||||
+ func = grub_extcmd_lockdown;
|
||||
+
|
||||
+ return grub_register_extcmd (name, func, flags, summary, description, parser);
|
||||
+}
|
||||
+
|
||||
void
|
||||
grub_unregister_extcmd (grub_extcmd_t ext)
|
||||
{
|
||||
diff --git a/grub-core/kern/command.c b/grub-core/kern/command.c
|
||||
index acd72187992..4aabcd4b5f9 100644
|
||||
--- a/grub-core/kern/command.c
|
||||
+++ b/grub-core/kern/command.c
|
||||
@@ -17,6 +17,7 @@
|
||||
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
+#include <grub/lockdown.h>
|
||||
#include <grub/mm.h>
|
||||
#include <grub/command.h>
|
||||
|
||||
@@ -77,6 +78,29 @@ grub_register_command_prio (const char *name,
|
||||
return cmd;
|
||||
}
|
||||
|
||||
+static grub_err_t
|
||||
+grub_cmd_lockdown (grub_command_t cmd __attribute__ ((unused)),
|
||||
+ int argc __attribute__ ((unused)),
|
||||
+ char **argv __attribute__ ((unused)))
|
||||
+
|
||||
+{
|
||||
+ return grub_error (GRUB_ERR_ACCESS_DENIED,
|
||||
+ N_("%s: the command is not allowed when lockdown is enforced"),
|
||||
+ cmd->name);
|
||||
+}
|
||||
+
|
||||
+grub_command_t
|
||||
+grub_register_command_lockdown (const char *name,
|
||||
+ grub_command_func_t func,
|
||||
+ const char *summary,
|
||||
+ const char *description)
|
||||
+{
|
||||
+ if (grub_is_lockdown () == GRUB_LOCKDOWN_ENABLED)
|
||||
+ func = grub_cmd_lockdown;
|
||||
+
|
||||
+ return grub_register_command_prio (name, func, summary, description, 0);
|
||||
+}
|
||||
+
|
||||
void
|
||||
grub_unregister_command (grub_command_t cmd)
|
||||
{
|
||||
diff --git a/grub-core/kern/lockdown.c b/grub-core/kern/lockdown.c
|
||||
new file mode 100644
|
||||
index 00000000000..f87ddaeb1ee
|
||||
--- /dev/null
|
||||
+++ b/grub-core/kern/lockdown.c
|
||||
@@ -0,0 +1,93 @@
|
||||
+/*
|
||||
+ * GRUB -- GRand Unified Bootloader
|
||||
+ * Copyright (C) 2020 Free Software Foundation, Inc.
|
||||
+ *
|
||||
+ * GRUB is free software: you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation, either version 3 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * GRUB is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#include <grub/dl.h>
|
||||
+#include <grub/file.h>
|
||||
+#include <grub/lockdown.h>
|
||||
+
|
||||
+/* There is no verifier framework in grub 2.02 */
|
||||
+#if 0
|
||||
+#include <grub/verify.h>
|
||||
+#endif
|
||||
+
|
||||
+static int lockdown = GRUB_LOCKDOWN_DISABLED;
|
||||
+
|
||||
+/* There is no verifier framework in grub 2.02 */
|
||||
+#if 0
|
||||
+static grub_err_t
|
||||
+lockdown_verifier_init (grub_file_t io __attribute__ ((unused)),
|
||||
+ enum grub_file_type type,
|
||||
+ void **context __attribute__ ((unused)),
|
||||
+ enum grub_verify_flags *flags)
|
||||
+{
|
||||
+ *flags = GRUB_VERIFY_FLAGS_SKIP_VERIFICATION;
|
||||
+
|
||||
+ switch (type & GRUB_FILE_TYPE_MASK)
|
||||
+ {
|
||||
+ case GRUB_FILE_TYPE_GRUB_MODULE:
|
||||
+ case GRUB_FILE_TYPE_LINUX_KERNEL:
|
||||
+ case GRUB_FILE_TYPE_MULTIBOOT_KERNEL:
|
||||
+ case GRUB_FILE_TYPE_XEN_HYPERVISOR:
|
||||
+ case GRUB_FILE_TYPE_BSD_KERNEL:
|
||||
+ case GRUB_FILE_TYPE_XNU_KERNEL:
|
||||
+ case GRUB_FILE_TYPE_PLAN9_KERNEL:
|
||||
+ case GRUB_FILE_TYPE_NTLDR:
|
||||
+ case GRUB_FILE_TYPE_TRUECRYPT:
|
||||
+ case GRUB_FILE_TYPE_FREEDOS:
|
||||
+ case GRUB_FILE_TYPE_PXECHAINLOADER:
|
||||
+ case GRUB_FILE_TYPE_PCCHAINLOADER:
|
||||
+ case GRUB_FILE_TYPE_COREBOOT_CHAINLOADER:
|
||||
+ case GRUB_FILE_TYPE_EFI_CHAINLOADED_IMAGE:
|
||||
+ case GRUB_FILE_TYPE_ACPI_TABLE:
|
||||
+ case GRUB_FILE_TYPE_DEVICE_TREE_IMAGE:
|
||||
+ *flags = GRUB_VERIFY_FLAGS_DEFER_AUTH;
|
||||
+
|
||||
+ /* Fall through. */
|
||||
+
|
||||
+ default:
|
||||
+ return GRUB_ERR_NONE;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+struct grub_file_verifier lockdown_verifier =
|
||||
+ {
|
||||
+ .name = "lockdown_verifier",
|
||||
+ .init = lockdown_verifier_init,
|
||||
+ };
|
||||
+#endif
|
||||
+
|
||||
+void
|
||||
+grub_lockdown (void)
|
||||
+{
|
||||
+ lockdown = GRUB_LOCKDOWN_ENABLED;
|
||||
+
|
||||
+ /*
|
||||
+ * XXX: The lockdown verifier doesn't make sense until
|
||||
+ * GRUB has moved to the shim_lock verifier.
|
||||
+ */
|
||||
+#if 0
|
||||
+ grub_verifier_register (&lockdown_verifier);
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+grub_is_lockdown (void)
|
||||
+{
|
||||
+ return lockdown;
|
||||
+}
|
||||
diff --git a/include/grub/command.h b/include/grub/command.h
|
||||
index eee4e847ee4..2a6f7f84697 100644
|
||||
--- a/include/grub/command.h
|
||||
+++ b/include/grub/command.h
|
||||
@@ -86,6 +86,11 @@ EXPORT_FUNC(grub_register_command_prio) (const char *name,
|
||||
const char *summary,
|
||||
const char *description,
|
||||
int prio);
|
||||
+grub_command_t
|
||||
+EXPORT_FUNC(grub_register_command_lockdown) (const char *name,
|
||||
+ grub_command_func_t func,
|
||||
+ const char *summary,
|
||||
+ const char *description);
|
||||
void EXPORT_FUNC(grub_unregister_command) (grub_command_t cmd);
|
||||
|
||||
static inline grub_command_t
|
||||
diff --git a/include/grub/extcmd.h b/include/grub/extcmd.h
|
||||
index 19fe592669e..fe9248b8bb6 100644
|
||||
--- a/include/grub/extcmd.h
|
||||
+++ b/include/grub/extcmd.h
|
||||
@@ -62,6 +62,13 @@ grub_extcmd_t EXPORT_FUNC(grub_register_extcmd) (const char *name,
|
||||
const char *description,
|
||||
const struct grub_arg_option *parser);
|
||||
|
||||
+grub_extcmd_t EXPORT_FUNC(grub_register_extcmd_lockdown) (const char *name,
|
||||
+ grub_extcmd_func_t func,
|
||||
+ grub_command_flags_t flags,
|
||||
+ const char *summary,
|
||||
+ const char *description,
|
||||
+ const struct grub_arg_option *parser);
|
||||
+
|
||||
grub_extcmd_t EXPORT_FUNC(grub_register_extcmd_prio) (const char *name,
|
||||
grub_extcmd_func_t func,
|
||||
grub_command_flags_t flags,
|
||||
diff --git a/include/grub/lockdown.h b/include/grub/lockdown.h
|
||||
new file mode 100644
|
||||
index 00000000000..40531fa823b
|
||||
--- /dev/null
|
||||
+++ b/include/grub/lockdown.h
|
||||
@@ -0,0 +1,44 @@
|
||||
+/*
|
||||
+ * GRUB -- GRand Unified Bootloader
|
||||
+ * Copyright (C) 2020 Free Software Foundation, Inc.
|
||||
+ *
|
||||
+ * GRUB is free software: you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation, either version 3 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * GRUB is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
+ */
|
||||
+
|
||||
+#ifndef GRUB_LOCKDOWN_H
|
||||
+#define GRUB_LOCKDOWN_H 1
|
||||
+
|
||||
+#include <grub/symbol.h>
|
||||
+
|
||||
+#define GRUB_LOCKDOWN_DISABLED 0
|
||||
+#define GRUB_LOCKDOWN_ENABLED 1
|
||||
+
|
||||
+#ifdef GRUB_MACHINE_EFI
|
||||
+extern void
|
||||
+EXPORT_FUNC (grub_lockdown) (void);
|
||||
+extern int
|
||||
+EXPORT_FUNC (grub_is_lockdown) (void);
|
||||
+#else
|
||||
+static inline void
|
||||
+grub_lockdown (void)
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+static inline int
|
||||
+grub_is_lockdown (void)
|
||||
+{
|
||||
+ return GRUB_LOCKDOWN_DISABLED;
|
||||
+}
|
||||
+#endif
|
||||
+#endif /* ! GRUB_LOCKDOWN_H */
|
||||
diff --git a/conf/Makefile.common b/conf/Makefile.common
|
||||
index b93879804c0..521cdda1f5a 100644
|
||||
--- a/conf/Makefile.common
|
||||
+++ b/conf/Makefile.common
|
||||
@@ -85,7 +85,9 @@ CPPFLAGS_PARTTOOL_LIST = -Dgrub_parttool_register=PARTTOOL_LIST_MARKER
|
||||
CPPFLAGS_TERMINAL_LIST = '-Dgrub_term_register_input(...)=INPUT_TERMINAL_LIST_MARKER(__VA_ARGS__)'
|
||||
CPPFLAGS_TERMINAL_LIST += '-Dgrub_term_register_output(...)=OUTPUT_TERMINAL_LIST_MARKER(__VA_ARGS__)'
|
||||
CPPFLAGS_COMMAND_LIST = '-Dgrub_register_command(...)=COMMAND_LIST_MARKER(__VA_ARGS__)'
|
||||
+CPPFLAGS_COMMAND_LIST += '-Dgrub_register_command_lockdown(...)=COMMAND_LOCKDOWN_LIST_MARKER(__VA_ARGS__)'
|
||||
CPPFLAGS_COMMAND_LIST += '-Dgrub_register_extcmd(...)=EXTCOMMAND_LIST_MARKER(__VA_ARGS__)'
|
||||
+CPPFLAGS_COMMAND_LIST += '-Dgrub_register_extcmd_lockdown(...)=EXTCOMMAND_LOCKDOWN_LIST_MARKER(__VA_ARGS__)'
|
||||
CPPFLAGS_COMMAND_LIST += '-Dgrub_register_command_p1(...)=P1COMMAND_LIST_MARKER(__VA_ARGS__)'
|
||||
CPPFLAGS_FDT_LIST := '-Dgrub_fdtbus_register(...)=FDT_DRIVER_LIST_MARKER(__VA_ARGS__)'
|
||||
CPPFLAGS_MARKER = $(CPPFLAGS_FS_LIST) $(CPPFLAGS_VIDEO_LIST) \
|
||||
diff --git a/docs/grub-dev.texi b/docs/grub-dev.texi
|
||||
index 3ce827ab726..421dd410e50 100644
|
||||
--- a/docs/grub-dev.texi
|
||||
+++ b/docs/grub-dev.texi
|
||||
@@ -84,6 +84,7 @@ This edition documents version @value{VERSION}.
|
||||
* Video Subsystem::
|
||||
* PFF2 Font File Format::
|
||||
* Graphical Menu Software Design::
|
||||
+* Lockdown framework::
|
||||
* Copying This Manual:: Copying This Manual
|
||||
* Index::
|
||||
@end menu
|
||||
@@ -1949,6 +1950,32 @@ the graphics mode that was in use before @code{grub_video_setup()} was called
|
||||
might fix some of the problems.
|
||||
|
||||
|
||||
+@node Lockdown framework
|
||||
+@chapter Lockdown framework
|
||||
+
|
||||
+The GRUB can be locked down, which is a restricted mode where some operations
|
||||
+are not allowed. For instance, some commands cannot be used when the GRUB is
|
||||
+locked down.
|
||||
+
|
||||
+The function
|
||||
+@code{grub_lockdown()} is used to lockdown GRUB and the function
|
||||
+@code{grub_is_lockdown()} function can be used to check whether lockdown is
|
||||
+enabled or not. When enabled, the function returns @samp{GRUB_LOCKDOWN_ENABLED}
|
||||
+and @samp{GRUB_LOCKDOWN_DISABLED} when is not enabled.
|
||||
+
|
||||
+The following functions can be used to register the commands that can only be
|
||||
+used when lockdown is disabled:
|
||||
+
|
||||
+@itemize
|
||||
+
|
||||
+@item @code{grub_cmd_lockdown()} registers command which should not run when the
|
||||
+GRUB is in lockdown mode.
|
||||
+
|
||||
+@item @code{grub_cmd_lockdown()} registers extended command which should not run
|
||||
+when the GRUB is in lockdown mode.
|
||||
+
|
||||
+@end itemize
|
||||
+
|
||||
@node Copying This Manual
|
||||
@appendix Copying This Manual
|
||||
|
||||
diff --git a/docs/grub.texi b/docs/grub.texi
|
||||
index c54bee31679..0a53c28ee88 100644
|
||||
--- a/docs/grub.texi
|
||||
+++ b/docs/grub.texi
|
||||
@@ -5610,6 +5610,8 @@ environment variables and commands are listed in the same order.
|
||||
@menu
|
||||
* Authentication and authorisation:: Users and access control
|
||||
* Using digital signatures:: Booting digitally signed code
|
||||
+* Lockdown:: Lockdown when booting on a secure setup
|
||||
+
|
||||
@end menu
|
||||
|
||||
@node Authentication and authorisation
|
||||
@@ -5772,6 +5774,13 @@ or BIOS) configuration to cause the machine to boot from a different
|
||||
(attacker-controlled) device. GRUB is at best only one link in a
|
||||
secure boot chain.
|
||||
|
||||
+@node Lockdown
|
||||
+@section Lockdown when booting on a secure setup
|
||||
+
|
||||
+The GRUB can be locked down when booted on a secure boot environment, for example
|
||||
+if the UEFI secure boot is enabled. On a locked down configuration, the GRUB will
|
||||
+be restricted and some operations/commands cannot be executed.
|
||||
+
|
||||
@node Platform limitations
|
||||
@chapter Platform limitations
|
||||
|
||||
diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am
|
||||
index 4062652506d..a6f1b0dcd06 100644
|
||||
--- a/grub-core/Makefile.am
|
||||
+++ b/grub-core/Makefile.am
|
||||
@@ -82,6 +82,7 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/fs.h
|
||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i18n.h
|
||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/kernel.h
|
||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/list.h
|
||||
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lockdown.h
|
||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/misc.h
|
||||
if COND_emu
|
||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/compiler-rt-emu.h
|
||||
@@ -350,8 +351,10 @@ command.lst: $(MARKER_FILES)
|
||||
b=`basename $$pp .marker`; \
|
||||
sed -n \
|
||||
-e "/EXTCOMMAND_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/*\1: $$b/;p;}" \
|
||||
+ -e "/EXTCOMMAND_LOCKDOWN_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/*\1: $$b/;p;}" \
|
||||
-e "/P1COMMAND_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/*\1: $$b/;p;}" \
|
||||
- -e "/COMMAND_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/\1: $$b/;p;}" $$pp; \
|
||||
+ -e "/COMMAND_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/\1: $$b/;p;}" \
|
||||
+ -e "/COMMAND_LOCKDOWN_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/\1: $$b/;p;}" $$pp; \
|
||||
done) | sort -u > $@
|
||||
platform_DATA += command.lst
|
||||
CLEANFILES += command.lst
|
@ -0,0 +1,53 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Javier Martinez Canillas <javierm@redhat.com>
|
||||
Date: Tue, 2 Feb 2021 19:59:48 +0100
|
||||
Subject: [PATCH] kern/lockdown: Set a variable if the GRUB is locked down
|
||||
|
||||
It may be useful for scripts to determine whether the GRUB is locked
|
||||
down or not. Add the lockdown variable which is set to "y" when the GRUB
|
||||
is locked down.
|
||||
|
||||
Suggested-by: Dimitri John Ledkov <xnox@ubuntu.com>
|
||||
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/kern/lockdown.c | 4 ++++
|
||||
docs/grub.texi | 3 +++
|
||||
2 files changed, 7 insertions(+)
|
||||
|
||||
diff --git a/grub-core/kern/lockdown.c b/grub-core/kern/lockdown.c
|
||||
index f87ddaeb1ee..30cba7f5ea2 100644
|
||||
--- a/grub-core/kern/lockdown.c
|
||||
+++ b/grub-core/kern/lockdown.c
|
||||
@@ -18,6 +18,7 @@
|
||||
*/
|
||||
|
||||
#include <grub/dl.h>
|
||||
+#include <grub/env.h>
|
||||
#include <grub/file.h>
|
||||
#include <grub/lockdown.h>
|
||||
|
||||
@@ -84,6 +85,9 @@ grub_lockdown (void)
|
||||
#if 0
|
||||