mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
efi_loader: buffer size for load options
The number of bytes in an utf-8 string is an upper limit for the number of words in the equivalent utf-16 string. In so far the inumbant coding works correctly. For non-ASCII characters the utf-16 string is shorter. With the patch only the necessary buffer size is allocated for the load options. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
ba7bd5c2ba
commit
7086a71aa8
1 changed files with 4 additions and 2 deletions
|
@ -116,18 +116,20 @@ static void set_load_options(struct efi_loaded_image *loaded_image_info,
|
|||
{
|
||||
size_t size;
|
||||
const char *env = env_get(env_var);
|
||||
u16 *pos;
|
||||
|
||||
loaded_image_info->load_options = NULL;
|
||||
loaded_image_info->load_options_size = 0;
|
||||
if (!env)
|
||||
return;
|
||||
size = strlen(env) + 1;
|
||||
size = utf8_utf16_strlen(env) + 1;
|
||||
loaded_image_info->load_options = calloc(size, sizeof(u16));
|
||||
if (!loaded_image_info->load_options) {
|
||||
printf("ERROR: Out of memory\n");
|
||||
return;
|
||||
}
|
||||
utf8_to_utf16(loaded_image_info->load_options, (u8 *)env, size);
|
||||
pos = loaded_image_info->load_options;
|
||||
utf8_utf16_strcpy(&pos, env);
|
||||
loaded_image_info->load_options_size = size * 2;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue