aboutsummaryrefslogtreecommitdiff
path: root/lib/efi_loader/efi_string.c
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2020-12-31 22:28:09 -0500
committerTom Rini <trini@konsulko.com>2020-12-31 22:28:09 -0500
commitc86b18074c9d40bfa63cda1068b6dfb810d4377d (patch)
tree391c7d8705d38ff7f059c242b514a2cc1fdecc97 /lib/efi_loader/efi_string.c
parent958b9e2482538ebfeb2e1161257603d4dec498cb (diff)
parentc35df7c9e43eaf5f8bf2113a58ea257291988589 (diff)
Merge tag 'efi-next' of https://gitlab.denx.de/u-boot/custodians/u-boot-efi into next
Pull request for UEFI sub-system for next * UEFI capsule authentication * UEFI capsule update on QEMU ARM * fsuuid command for FAT file system * bug fixes
Diffstat (limited to 'lib/efi_loader/efi_string.c')
-rw-r--r--lib/efi_loader/efi_string.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/efi_loader/efi_string.c b/lib/efi_loader/efi_string.c
index 3de721f06c..9627242288 100644
--- a/lib/efi_loader/efi_string.c
+++ b/lib/efi_loader/efi_string.c
@@ -23,13 +23,19 @@
* Return: A pointer to the next position after the created string
* in @buffer, or NULL otherwise
*/
-u16 *efi_create_indexed_name(u16 *buffer, const char *name, unsigned int index)
+u16 *efi_create_indexed_name(u16 *buffer, size_t buffer_size, const char *name,
+ unsigned int index)
{
u16 *p = buffer;
char index_buf[5];
+ size_t size;
+ size = (utf8_utf16_strlen(name) * sizeof(u16) +
+ sizeof(index_buf) * sizeof(u16));
+ if (buffer_size < size)
+ return NULL;
utf8_utf16_strcpy(&p, name);
- sprintf(index_buf, "%04X", index);
+ snprintf(index_buf, sizeof(index_buf), "%04X", index);
utf8_utf16_strcpy(&p, index_buf);
return p;