Transform grub_f2fs_utf16_to_utf8() 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/f2fs.c | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/grub-core/fs/f2fs.c b/grub-core/fs/f2fs.c index 429a3db83..827a8c196 100644 --- a/grub-core/fs/f2fs.c +++ b/grub-core/fs/f2fs.c @@ -1251,25 +1251,10 @@ grub_f2fs_close (grub_file_t file) return GRUB_ERR_NONE; } -static grub_uint8_t * -grub_f2fs_utf16_to_utf8 (grub_uint16_t *in_buf_le) +static char * +grub_f2fs_utf16_to_utf8 (grub_uint16_t *in_buf_le, grub_size_t len) { - grub_uint16_t in_buf[MAX_VOLUME_NAME]; - grub_uint8_t *out_buf; - int len = 0; - - out_buf = grub_malloc (MAX_VOLUME_NAME * GRUB_MAX_UTF8_PER_UTF16 + 1); - if (!out_buf) - return NULL; - - while (*in_buf_le != 0 && len < MAX_VOLUME_NAME) { - in_buf[len] = grub_le_to_cpu16 (in_buf_le[len]); - len++; - } - - *grub_utf16_to_utf8 (out_buf, in_buf, len, UTF16_CPU) = '\0'; - - return out_buf; + return (char *) grub_utf16_to_utf8_alloc (in_buf_le, len, UTF16_LE); } #if __GNUC__ >= 9 @@ -1287,7 +1272,8 @@ grub_f2fs_label (grub_device_t device, char **label) data = grub_f2fs_mount (disk); if (data) - *label = (char *) grub_f2fs_utf16_to_utf8 (data->sblock.volume_name); + *label = grub_f2fs_utf16_to_utf8 (data->sblock.volume_name, + MAX_VOLUME_NAME); else *label = NULL; -- 2.34.1 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel