[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] * grub-core/fs/udf.c: Fix reading label, lvd.ident is dstrin
From: |
Pali Rohár |
Subject: |
Re: [PATCH] * grub-core/fs/udf.c: Fix reading label, lvd.ident is dstring |
Date: |
Sun, 2 Jul 2017 12:36:09 +0200 |
User-agent: |
KMail/1.13.7 (Linux/3.13.0-117-generic; KDE/4.14.2; x86_64; ; ) |
On Thursday 22 June 2017 14:33:17 Pali Rohár wrote:
> UDF dstring has stored length in the last byte of buffer. Therefore
> last byte is not part of recorded characters. And empty string in
> dstring is encoded as empty buffer, including first byte
> (compression id).
> ---
> I'm not sure how Grub2 should handle empty label. Current patch set
> empty buffer for empty label. But it is possible to ignore and do not
> set label in this case at all.
> ---
Hi! Any comments on this patch? Specially how to deal with empty labels?
> grub-core/fs/udf.c | 21 ++++++++++++++++++++-
> 1 file changed, 20 insertions(+), 1 deletion(-)
>
> diff --git a/grub-core/fs/udf.c b/grub-core/fs/udf.c
> index 839bff8..e7a4d4e 100644
> --- a/grub-core/fs/udf.c
> +++ b/grub-core/fs/udf.c
> @@ -860,6 +860,25 @@ read_string (const grub_uint8_t *raw,
> grub_size_t sz, char *outbuf) return outbuf;
> }
>
> +static char *
> +read_dstring (const grub_uint8_t *raw, grub_size_t sz, char *outbuf)
> +{
> + grub_size_t len;
> +
> + if (raw[0] == 0)
> + {
> + if (!outbuf)
> + outbuf = grub_malloc (1);
> + outbuf[0] = 0;
> + return outbuf;
> + }
> +
> + len = raw[sz - 1];
> + if (len > sz - 1)
> + len = sz - 1;
> + return read_string (raw, len, outbuf);
> +}
> +
> static int
> grub_udf_iterate_dir (grub_fshelp_node_t dir,
> grub_fshelp_iterate_dir_hook_t hook, void *hook_data)
> @@ -1197,7 +1216,7 @@ grub_udf_label (grub_device_t device, char
> **label)
>
> if (data)
> {
> - *label = read_string (data->lvd.ident, sizeof
> (data->lvd.ident), 0); + *label = read_dstring
> (data->lvd.ident, sizeof (data->lvd.ident), 0); grub_free (data);
> }
> else
--
Pali Rohár
address@hidden
signature.asc
Description: This is a digitally signed message part.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH] * grub-core/fs/udf.c: Fix reading label, lvd.ident is dstring,
Pali Rohár <=