LGTM

Le mar. 22 août 2023, 23:41, Vitaly Kuzmichev <vitaly.kuzmic...@rtsoft.de>
a écrit :

> Transform grub_fat_label() function to use grub_utf16_to_utf8_alloc()
> helper function to convert volume label from UTF-16 to UTF-8.
>
> Signed-off-by: Vitaly Kuzmichev <vitaly.kuzmic...@rtsoft.de>
> ---
>  grub-core/fs/fat.c | 20 ++++++++------------
>  1 file changed, 8 insertions(+), 12 deletions(-)
>
> diff --git a/grub-core/fs/fat.c b/grub-core/fs/fat.c
> index 24d0b629b..64e9be80d 100644
> --- a/grub-core/fs/fat.c
> +++ b/grub-core/fs/fat.c
> @@ -1157,23 +1157,19 @@ grub_fat_label (grub_device_t device, char **label)
>        /* Volume label. */
>        if (dir.entry_type == 0x83)
>         {
> +         grub_uint8_t *p;
>           grub_size_t chc;
> -         grub_uint16_t t[ARRAY_SIZE (dir.type_specific.volume_label.str)];
> -         grub_size_t i;
> -         *label = grub_malloc (ARRAY_SIZE
> (dir.type_specific.volume_label.str)
> -                               * GRUB_MAX_UTF8_PER_UTF16 + 1);
> -         if (!*label)
> +
> +         chc = grub_min(dir.type_specific.volume_label.character_count,
> +                        ARRAY_SIZE (dir.type_specific.volume_label.str));
> +         p = grub_utf16_to_utf8_alloc (dir.type_specific.volume_label.str,
> +                                       chc, UTF16_LE);
> +         if (!p)
>             {
>               grub_free (root.data);
>               return grub_errno;
>             }
> -         chc = dir.type_specific.volume_label.character_count;
> -         if (chc > ARRAY_SIZE (dir.type_specific.volume_label.str))
> -           chc = ARRAY_SIZE (dir.type_specific.volume_label.str);
> -         for (i = 0; i < chc; i++)
> -           t[i] = grub_le_to_cpu16
> (dir.type_specific.volume_label.str[i]);
> -         *grub_utf16_to_utf8 ((grub_uint8_t *) *label, t,
> -                              chc, UTF16_CPU) = '\0';
> +         *label = (char *) p;
>         }
>      }
>
> --
> 2.34.1
>
>
> _______________________________________________
> 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 via email to