summaryrefslogtreecommitdiff
path: root/src/boot/efi/util.c
diff options
context:
space:
mode:
authorJan Janssen <medhefgo@web.de>2021-11-17 11:11:23 +0100
committerJan Janssen <medhefgo@web.de>2021-11-29 16:20:45 +0100
commit0a15a824d2505f2a5657075c7ab888f28b39fc0a (patch)
treee7c69719582be9afc84a8e7c5666779e6d51dd3b /src/boot/efi/util.c
parentccfbdbdcabd194bb14148a4f26cf4b3128a5bbf7 (diff)
downloadsystemd-0a15a824d2505f2a5657075c7ab888f28b39fc0a.tar.gz
sd-boot: Use non-failing allocators everywhere else
Diffstat (limited to 'src/boot/efi/util.c')
-rw-r--r--src/boot/efi/util.c44
1 files changed, 9 insertions, 35 deletions
diff --git a/src/boot/efi/util.c b/src/boot/efi/util.c
index aa3c249562..04e390b0fa 100644
--- a/src/boot/efi/util.c
+++ b/src/boot/efi/util.c
@@ -180,9 +180,7 @@ EFI_STATUS efivar_get(const EFI_GUID *vendor, const CHAR16 *name, CHAR16 **value
}
/* Make sure a terminating NUL is available at the end */
- val = AllocatePool(size + sizeof(CHAR16));
- if (!val)
- return EFI_OUT_OF_RESOURCES;
+ val = xallocate_pool(size + sizeof(CHAR16));
CopyMem(val, buf, size);
val[size / sizeof(CHAR16)] = 0; /* NUL terminate */
@@ -256,9 +254,7 @@ EFI_STATUS efivar_get_raw(const EFI_GUID *vendor, const CHAR16 *name, CHAR8 **bu
assert(name);
l = sizeof(CHAR16 *) * EFI_MAXIMUM_VARIABLE_SIZE;
- buf = AllocatePool(l);
- if (!buf)
- return EFI_OUT_OF_RESOURCES;
+ buf = xallocate_pool(l);
err = RT->GetVariable((CHAR16 *) name, (EFI_GUID *) vendor, NULL, &l, buf);
if (!EFI_ERROR(err)) {
@@ -467,10 +463,7 @@ EFI_STATUS file_read(EFI_FILE_HANDLE dir, const CHAR16 *name, UINTN off, UINTN s
return err;
}
- buf = AllocatePool(size + 1);
- if (!buf)
- return EFI_OUT_OF_RESOURCES;
-
+ buf = xallocate_pool(size + 1);
err = handle->Read(handle, &size, buf);
if (EFI_ERROR(err))
return err;
@@ -582,17 +575,11 @@ EFI_STATUS get_file_info_harder(
/* A lot like LibFileInfo() but with useful error propagation */
- fi = AllocatePool(size);
- if (!fi)
- return EFI_OUT_OF_RESOURCES;
-
+ fi = xallocate_pool(size);
err = handle->GetInfo(handle, &GenericFileInfo, &size, fi);
if (err == EFI_BUFFER_TOO_SMALL) {
FreePool(fi);
- fi = AllocatePool(size); /* GetInfo tells us the required size, let's use that now */
- if (!fi)
- return EFI_OUT_OF_RESOURCES;
-
+ fi = xallocate_pool(size); /* GetInfo tells us the required size, let's use that now */
err = handle->GetInfo(handle, &GenericFileInfo, &size, fi);
}
@@ -624,11 +611,7 @@ EFI_STATUS readdir_harder(
if (!*buffer) {
sz = OFFSETOF(EFI_FILE_INFO, FileName) /* + 256 */;
-
- *buffer = AllocatePool(sz);
- if (!*buffer)
- return EFI_OUT_OF_RESOURCES;
-
+ *buffer = xallocate_pool(sz);
*buffer_size = sz;
} else
sz = *buffer_size;
@@ -636,15 +619,8 @@ EFI_STATUS readdir_harder(
err = handle->Read(handle, &sz, *buffer);
if (err == EFI_BUFFER_TOO_SMALL) {
FreePool(*buffer);
-
- *buffer = AllocatePool(sz);
- if (!*buffer) {
- *buffer_size = 0;
- return EFI_OUT_OF_RESOURCES;
- }
-
+ *buffer = xallocate_pool(sz);
*buffer_size = sz;
-
err = handle->Read(handle, &sz, *buffer);
}
if (EFI_ERROR(err))
@@ -673,7 +649,7 @@ UINTN strnlena(const CHAR8 *p, UINTN maxlen) {
return c;
}
-CHAR8 *strndup8(const CHAR8 *p, UINTN sz) {
+CHAR8 *xstrndup8(const CHAR8 *p, UINTN sz) {
CHAR8 *n;
/* Following efilib's naming scheme this function would be called strndupa(), but we already have a
@@ -684,9 +660,7 @@ CHAR8 *strndup8(const CHAR8 *p, UINTN sz) {
sz = strnlena(p, sz);
- n = AllocatePool(sz + 1);
- if (!n)
- return NULL;
+ n = xallocate_pool(sz + 1);
if (sz > 0)
CopyMem(n, p, sz);