git: 20c5e4b39368 - main - efivar: Allow uuid_t and efi_guid_t to be different types.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 01 May 2025 18:06:37 UTC
The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=20c5e4b393682b00694a1ef184ec4bd460b49ab1 commit 20c5e4b393682b00694a1ef184ec4bd460b49ab1 Author: Warner Losh <imp@FreeBSD.org> AuthorDate: 2025-05-01 17:53:12 +0000 Commit: Warner Losh <imp@FreeBSD.org> CommitDate: 2025-05-01 17:53:12 +0000 efivar: Allow uuid_t and efi_guid_t to be different types. While they are binarily the same, the API are different. To use EDK2 more effectively, we need to transition to using EDK@'s API rather than the uuid_t API. This change makes the code neutral on the subject. Sponsored by: Netflix Reviewed by: tsoome Differential Revision: https://reviews.freebsd.org/D50035 --- lib/libefivar/efivar.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/libefivar/efivar.c b/lib/libefivar/efivar.c index 0089ed608a6f..e28987ff001d 100644 --- a/lib/libefivar/efivar.c +++ b/lib/libefivar/efivar.c @@ -172,7 +172,7 @@ efi_get_variable(efi_guid_t guid, const char *name, rv = utf8_to_ucs2(name, &var.name, &var.namesize); if (rv != 0) goto errout; - var.vendor = guid; + memcpy(&var.vendor, &guid, sizeof(guid)); var.data = buf; var.datasize = sizeof(buf); rv = ioctl(efi_fd, EFIIOC_VAR_GET, &var); @@ -240,7 +240,7 @@ again: rv = utf8_to_ucs2(*name, &var.name, &size); if (rv != 0) goto errout; - var.vendor = **guid; + memcpy(&var.vendor, *guid, sizeof(**guid)); } rv = ioctl(efi_fd, EFIIOC_VAR_NEXT, &var); if (rv == 0 && var.name == NULL) { @@ -266,7 +266,7 @@ again: rv = ucs2_to_utf8(var.name, name); if (rv != 0) goto errout; - retguid = var.vendor; + memcpy(&retguid, &var.vendor, sizeof(retguid)); *guid = &retguid; } errout: @@ -361,7 +361,7 @@ efi_set_variable(efi_guid_t guid, const char *name, rv = utf8_to_ucs2(name, &var.name, &var.namesize); if (rv != 0) goto errout; - var.vendor = guid; + memcpy(&var.vendor, &guid, sizeof(guid)); var.data = data; var.datasize = data_size; var.attrib = attributes;