All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andreas Klauer <andreas.klauer@metamorpher.de>
To: The development of GNU GRUB <grub-devel@gnu.org>
Cc: Daniel Kiper <daniel.kiper@oracle.com>,
	b@horn.uk, andreas.klauer@metamorpher.de
Subject: Re: [SECURITY PATCH 18/73] fs/ntfs: Implement attribute verification
Date: Fri, 28 Feb 2025 10:55:46 +0100	[thread overview]
Message-ID: <Z8GIInpvyPBN5Zwr@memoxo.de> (raw)
In-Reply-To: <20250218180119.16617-18-daniel.kiper@oracle.com>

Hello,

(I'm not on this list; hope this message finds you well.)

it seems that this patch triggers an infinite loop when 
trying to access ntfs, so any search command that comes 
across any ntfs partition gets stuck.

Basically this while-loop in find_attr()

  while (at->attr_cur < mft_end && *at->attr_cur != 0xFF)
    {
      at->attr_nxt = next_attribute (at->attr_cur, at->end);
      if (*at->attr_cur == GRUB_NTFS_AT_ATTRIBUTE_LIST)
at->attr_end = at->attr_cur;
      if ((*at->attr_cur == attr) || (attr == 0))
return at->attr_cur;
      at->attr_cur = at->attr_nxt;
    }

loops indefinitely (at->attr_cur=0) after next_attribute() returns NULL here:

  next += u16at (curr_attribute, 4);
  if (validate_attribute (next, end) == false)
    return NULL;

after validate_attribute() (introduced in this patch) returns false here

  /* Not an error case, just reached the end of the attributes. */
  if (attr_size == 0)
    return false;

Simply checking at->attr_cur in the while loop makes it work again:

  while (at->attr_cur && at->attr_cur < mft_end && *at->attr_cur != 0xFF)
 
but I don't understand half of what that code actually does, 
so I can't vouch for correctness (not sending it as a patch).

Also filed here https://savannah.gnu.org/bugs/index.php?66855

and here https://gitlab.archlinux.org/archlinux/packaging/packages/grub/-/issues/12

Kind regards,
Andreas Klauer

On Tue, Feb 18, 2025 at 07:00:24PM +0100, Daniel Kiper via Grub-devel wrote:
> From: B Horn <b@horn.uk>
> 
> It was possible to read OOB when an attribute had a size that exceeded
> the allocated buffer. This resolves that by making sure all attributes
> that get read are fully in the allocated space by implementing
> a function to validate them.
> 
> Defining the offsets in include/grub/ntfs.h but they are only used in
> the validation function and not across the rest of the NTFS code.
> 
> Signed-off-by: B Horn <b@horn.uk>
> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
> ---
>  grub-core/fs/ntfs.c | 153 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  include/grub/ntfs.h |  22 ++++++++
>  2 files changed, 175 insertions(+)
> 
> diff --git a/grub-core/fs/ntfs.c b/grub-core/fs/ntfs.c
> index 1c678f3d0..64f4f2221 100644
> --- a/grub-core/fs/ntfs.c
> +++ b/grub-core/fs/ntfs.c
> @@ -70,6 +70,149 @@ res_attr_data_len (void *res_attr_ptr)
>    return u32at (res_attr_ptr, 0x10);
>  }
>  
> +/*
> + * Check if the attribute is valid and doesn't exceed the allocated region.
> + * This accounts for resident and non-resident data.
> + *
> + * This is based off the documentation from the linux-ntfs project:
> + * https://flatcap.github.io/linux-ntfs/ntfs/concepts/attribute_header.html
> + */
> +static bool
> +validate_attribute (grub_uint8_t *attr, void *end)
> +{
> +  grub_size_t attr_size = 0;
> +  grub_size_t min_size = 0;
> +  grub_size_t spare = (grub_uint8_t *) end - attr;
> +  /*
> +   * Just used as a temporary variable to try and deal with cases where someone
> +   * tries to overlap fields.
> +   */
> +  grub_size_t curr = 0;
> +
> +  /* Need verify we can entirely read the attributes header. */
> +  if (attr + GRUB_NTFS_ATTRIBUTE_HEADER_SIZE >= (grub_uint8_t *) end)
> +    goto fail;
> +
> +  /*
> +   * So, the rest of this code uses a 16bit int for the attribute length but
> +   * from reading the all the documentation I could find it says this field is
> +   * actually 32bit. But let's be consistent with the rest of the code.
> +   *
> +   * https://elixir.bootlin.com/linux/v6.10.7/source/fs/ntfs3/ntfs.h#L370
> +   */
> +  attr_size = u16at (attr, GRUB_NTFS_ATTRIBUTE_LENGTH);
> +
> +  if (attr_size > spare)
> +    goto fail;
> +
> +  /* Not an error case, just reached the end of the attributes. */
> +  if (attr_size == 0)
> +    return false;
> +
> +  /*
> +   * Extra validation by trying to calculate a minimum possible size for this
> +   * attribute. +8 from the size of the resident data struct which is the
> +   * minimum that can be added.
> +   */
> +  min_size = GRUB_NTFS_ATTRIBUTE_HEADER_SIZE + 8;
> +
> +  if (min_size > attr_size)
> +    goto fail;
> +
> +  /* Is the data is resident (0) or not (1). */
> +  if (attr[GRUB_NTFS_ATTRIBUTE_RESIDENT] == 0)
> +    {
> +      /* Read the offset and size of the attribute. */
> +      curr = u16at (attr, GRUB_NTFS_ATTRIBUTE_RES_OFFSET);
> +      curr += u32at (attr, GRUB_NTFS_ATTRIBUTE_RES_LENGTH);
> +      if (curr > min_size)
> +	min_size = curr;
> +    }
> +  else
> +    {
> +      /*
> +       * If the data is non-resident, the minimum size is 64 which is where
> +       * the data runs start. We already have a minimum size of 24. So, just
> +       * adding 40 to get to the real value.
> +       */
> +      min_size += 40;
> +      if (min_size > attr_size)
> +	goto fail;
> +      /* If the compression unit size is > 0, +8 bytes*/
> +      if (u16at (attr, GRUB_NTFS_ATTRIBUTE_COMPRESSION_UNIT_SIZE) > 0)
> +	min_size += 8;
> +
> +      /*
> +       * Need to consider the data runs now. Each member of the run has byte
> +       * that describes the size of the data length and offset. Each being
> +       * 4 bits in the byte.
> +       */
> +      curr = u16at (attr, GRUB_NTFS_ATTRIBUTE_DATA_RUNS);
> +
> +      if (curr + 1 > min_size)
> +	min_size = curr + 1;
> +
> +      if (min_size > attr_size)
> +	goto fail;
> +
> +      /*
> +       * Each attribute can store multiple data runs which are stored
> +       * continuously in the attribute. They exist as one header byte
> +       * with up to 14 bytes following it depending on the lengths.
> +       * We stop when we hit a header that is just a NUL byte.
> +       *
> +       * https://flatcap.github.io/linux-ntfs/ntfs/concepts/data_runs.html
> +       */
> +      while (attr[curr] != 0)
> +	{
> +	  /*
> +	   * We stop when we hit a header that is just a NUL byte. The data
> +	   * run header is stored as a single byte where the top 4 bits refer
> +	   * to the number of bytes used to store the total length of the
> +	   * data run, and the number of bytes used to store the offset.
> +	   * These directly follow the header byte, so we use them to update
> +	   * the minimum size.
> +	   */
> +	  min_size += (attr[curr] & 0x7) + ((attr[curr] >> 4) & 0x7);
> +	  curr += min_size;
> +	  min_size++;
> +	  if (min_size > attr_size)
> +	    goto fail;
> +	}
> +    }
> +
> +  /* Name offset, doing this after data residence checks. */
> +  if (u16at (attr, GRUB_NTFS_ATTRIBUTE_NAME_OFFSET) != 0)
> +    {
> +      curr = u16at (attr, GRUB_NTFS_ATTRIBUTE_NAME_OFFSET);
> +      /*
> +       * Multiple the name length by 2 as its UTF-16. Can be zero if this in an
> +       * unamed attribute.
> +       */
> +      curr += attr[GRUB_NTFS_ATTRIBUTE_NAME_LENGTH] * 2;
> +      if (curr > min_size)
> +	min_size = curr;
> +    }
> +
> +  /* Padded to 8 bytes. */
> +  if (min_size % 8 != 0)
> +    min_size += 8 - (min_size % 8);
> +
> +  /*
> +   * At this point min_size should be exactly attr_size but being flexible
> +   * here to avoid any issues.
> +   */
> +  if (min_size > attr_size)
> +    goto fail;
> +
> +  return true;
> +
> + fail:
> +  grub_dprintf ("ntfs", "spare=%" PRIuGRUB_SIZE " min_size=%" PRIuGRUB_SIZE " attr_size=%" PRIuGRUB_SIZE "\n",
> +		spare, min_size, attr_size);
> +  return false;
> +}
> +
>  /* Return the next attribute if it exists, otherwise return NULL. */
>  static grub_uint8_t *
>  next_attribute (grub_uint8_t *curr_attribute, void *end)
> @@ -84,6 +227,8 @@ next_attribute (grub_uint8_t *curr_attribute, void *end)
>      return NULL;
>  
>    next += u16at (curr_attribute, 4);
> +  if (validate_attribute (next, end) == false)
> +    return NULL;
>  
>    return next;
>  }
> @@ -290,6 +435,9 @@ find_attr (struct grub_ntfs_attr *at, grub_uint8_t attr)
>        /* From this point on pa_end is the end of the buffer */
>        at->end = pa_end;
>  
> +      if (validate_attribute (at->attr_nxt, pa_end) == false)
> +	return NULL;
> +
>        while (at->attr_nxt)
>  	{
>  	  if ((*at->attr_nxt == attr) || (attr == 0))
> @@ -319,6 +467,9 @@ find_attr (struct grub_ntfs_attr *at, grub_uint8_t attr)
>  						  + 1));
>  	  pa = at->attr_nxt + u16at (pa, 4);
>  
> +	  if (validate_attribute (pa, pa_end) == true)
> +	    pa = NULL;
> +
>  	  while (pa)
>  	    {
>  	      if (*pa != attr)
> @@ -572,6 +723,8 @@ read_attr (struct grub_ntfs_attr *at, grub_uint8_t *dest, grub_disk_addr_t ofs,
>        else
>  	vcn = ofs >> (at->mft->data->log_spc + GRUB_NTFS_BLK_SHR);
>        pa = at->attr_nxt + u16at (at->attr_nxt, 4);
> +      if (validate_attribute (pa, at->attr_end) == false)
> +	pa = NULL;
>  
>        while (pa)
>  	{
> diff --git a/include/grub/ntfs.h b/include/grub/ntfs.h
> index 2c8078403..77b182acf 100644
> --- a/include/grub/ntfs.h
> +++ b/include/grub/ntfs.h
> @@ -91,6 +91,28 @@ enum
>  
>  #define GRUB_NTFS_ATTRIBUTE_HEADER_SIZE 16
>  
> +/*
> + * To make attribute validation clearer the offsets for each value in the
> + * attribute headers are defined as macros.
> + *
> + * These offsets are all from:
> + * https://flatcap.github.io/linux-ntfs/ntfs/concepts/attribute_header.html
> + */
> +
> +/* These offsets are part of the attribute header. */
> +#define GRUB_NTFS_ATTRIBUTE_LENGTH      4
> +#define GRUB_NTFS_ATTRIBUTE_RESIDENT    8
> +#define GRUB_NTFS_ATTRIBUTE_NAME_LENGTH 9
> +#define GRUB_NTFS_ATTRIBUTE_NAME_OFFSET 10
> +
> +/* Offsets for values needed for resident data. */
> +#define GRUB_NTFS_ATTRIBUTE_RES_LENGTH  16
> +#define GRUB_NTFS_ATTRIBUTE_RES_OFFSET  20
> +
> +/* Offsets for values needed for non-resident data. */
> +#define GRUB_NTFS_ATTRIBUTE_DATA_RUNS             32
> +#define GRUB_NTFS_ATTRIBUTE_COMPRESSION_UNIT_SIZE 34
> +
>  enum
>    {
>      GRUB_NTFS_AF_ALST		= 1,
> -- 
> 2.11.0
> 
> 
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

  reply	other threads:[~2025-02-28 14:09 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-18 18:00 [SECURITY PATCH 00/73] GRUB2 vulnerabilities - 2025/02/18 Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 01/73] misc: Implement grub_strlcpy() Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 02/73] fs/ufs: Fix a heap OOB write Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 03/73] fs/hfs: Fix stack OOB write with grub_strcpy() Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 04/73] fs/tar: Initialize name in grub_cpio_find_file() Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 05/73] fs/tar: Integer overflow leads to heap OOB write Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 06/73] fs/f2fs: Set a grub_errno if mount fails Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 07/73] fs/hfsplus: " Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 08/73] fs/iso9660: " Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 09/73] fs/iso9660: Fix invalid free Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 10/73] fs/jfs: Fix OOB read in jfs_getent() Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 11/73] fs/jfs: Fix OOB read caused by invalid dir slot index Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 12/73] fs/jfs: Use full 40 bits offset and address for a data extent Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 13/73] fs/jfs: Inconsistent signed/unsigned types usage in return values Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 14/73] fs/ext2: Fix out-of-bounds read for inline extents Daniel Kiper via Grub-devel
2025-02-21  1:15   ` Michael Chang via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 15/73] fs/ntfs: Fix out-of-bounds read Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 16/73] fs/ntfs: Track the end of the MFT attribute buffer Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 17/73] fs/ntfs: Use a helper function to access attributes Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 18/73] fs/ntfs: Implement attribute verification Daniel Kiper via Grub-devel
2025-02-28  9:55   ` Andreas Klauer [this message]
2025-02-28 13:04     ` Daniel Kiper via Grub-devel
2025-03-01 22:43       ` Glenn Washburn
2025-03-02  8:09         ` Thomas Schmitt via Grub-devel
2025-03-02  8:41         ` Thomas Schmitt via Grub-devel
2025-03-03  8:17           ` Glenn Washburn
2025-03-03  9:32             ` Thomas Schmitt via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 19/73] fs/xfs: Fix out-of-bounds read Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 20/73] fs/xfs: Ensuring failing to mount sets a grub_errno Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 21/73] kern/file: Ensure file->data is set Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 22/73] kern/file: Implement filesystem reference counting Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 23/73] disk/cryptodisk: Require authentication after TPM unlock for CLI access Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 24/73] disk/loopback: Reference tracking for the loopback Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 25/73] kern/disk: Limit recursion depth Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 26/73] kern/partition: Limit recursion in part_iterate() Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 27/73] script/execute: Limit the recursion depth Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 28/73] net: Unregister net_default_ip and net_default_mac variables hooks on unload Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 29/73] net: Remove variables hooks when interface is unregisted Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 30/73] net: Fix OOB write in grub_net_search_config_file() Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 31/73] net/tftp: Fix stack buffer overflow in tftp_open() Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 32/73] video/readers/jpeg: Do not permit duplicate SOF0 markers in JPEG Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 33/73] kern/dl: Fix for an integer overflow in grub_dl_ref() Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 34/73] kern/dl: Use correct segment in grub_dl_set_mem_attrs() Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 35/73] kern/dl: Check for the SHF_INFO_LINK flag in grub_dl_relocate_symbols() Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 36/73] commands/extcmd: Missing check for failed allocation Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 37/73] commands/ls: Fix NULL dereference Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 38/73] commands/pgp: Unregister the "check_signatures" hooks on module unload Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 39/73] normal: Remove variables " Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 40/73] gettext: " Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 41/73] gettext: Integer overflow leads to heap OOB write or read Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 42/73] gettext: Integer overflow leads to heap OOB write Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 43/73] commands/read: Fix an integer overflow when supplying more than 2^31 characters Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 44/73] commands/test: Stack overflow due to unlimited recursion depth Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 45/73] commands/minicmd: Block the dump command in lockdown mode Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 46/73] commands/memrw: Disable memory reading " Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 47/73] commands/hexdump: " Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 48/73] fs/bfs: Disable under lockdown Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 49/73] fs: Disable many filesystems " Daniel Kiper via Grub-devel
2025-02-19  8:15   ` Petr Řehák
2025-02-20 16:43     ` Daniel Kiper
2025-02-21 11:20       ` Pascal Hambourg
2025-02-24 14:16         ` Daniel Kiper
2025-03-02 17:11       ` Andrew Hamilton
2025-02-19 15:43   ` Andrew Hamilton
2025-02-24 14:18     ` Daniel Kiper via Grub-devel
2025-02-24 19:30       ` Andrew Hamilton
2025-10-21  9:12   ` Joseph Lee via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 50/73] disk: Use safe math macros to prevent overflows Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 51/73] disk: Prevent overflows when allocating memory for arrays Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 52/73] disk: Check if returned pointer for allocated memory is NULL Daniel Kiper via Grub-devel
2025-02-18 18:00 ` [SECURITY PATCH 53/73] disk/ieee1275/ofdisk: Call grub_ieee1275_close() when grub_malloc() fails Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 54/73] fs: Use safe math macros to prevent overflows Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 55/73] fs: Prevent overflows when allocating memory for arrays Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 56/73] fs: Prevent overflows when assigning returned values from read_number() Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 57/73] fs/zfs: Use safe math macros to prevent overflows Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 58/73] fs/zfs: Prevent overflows when allocating memory for arrays Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 59/73] fs/zfs: Check if returned pointer for allocated memory is NULL Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 60/73] fs/zfs: Add missing NULL check after grub_strdup() call Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 61/73] net: Use safe math macros to prevent overflows Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 62/73] net: Prevent overflows when allocating memory for arrays Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 63/73] net: Check if returned pointer for allocated memory is NULL Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 64/73] fs/sfs: Check if " Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 65/73] script/execute: Fix potential underflow and NULL dereference Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 66/73] osdep/unix/getroot: Fix potential underflow Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 67/73] misc: Ensure consistent overflow error messages Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 68/73] bus/usb/ehci: Define GRUB_EHCI_TOGGLE as grub_uint32_t Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 69/73] normal/menu: Use safe math to avoid an integer overflow Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 70/73] kern/partition: Add sanity check after grub_strtoul() call Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 71/73] kern/misc: " Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 72/73] loader/i386/linux: Cast left shift to grub_uint32_t Daniel Kiper via Grub-devel
2025-02-18 18:01 ` [SECURITY PATCH 73/73] loader/i386/bsd: Use safe math to avoid underflow Daniel Kiper via Grub-devel
2025-02-18 18:26 ` [SECURITY PATCH 00/73] GRUB2 vulnerabilities - 2025/02/18 Tobias Powalowski via Grub-devel
2025-02-24 15:08   ` Daniel Kiper
2025-02-18 19:33 ` Didier Spaier via Grub-devel
2025-02-19 12:03   ` Daniel Kiper via Grub-devel
2025-02-19 13:48     ` Didier Spaier via Grub-devel
2025-02-21 10:06 ` Christian Hesse
2025-02-24 14:34   ` Daniel Kiper via Grub-devel
2025-02-27 10:03     ` Christian Hesse
2025-02-28 12:57       ` Daniel Kiper via Grub-devel
2025-03-03  7:55         ` Christian Hesse
2025-03-04 12:57           ` Daniel Kiper via Grub-devel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Z8GIInpvyPBN5Zwr@memoxo.de \
    --to=andreas.klauer@metamorpher.de \
    --cc=b@horn.uk \
    --cc=daniel.kiper@oracle.com \
    --cc=grub-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.