diff options
author | Jan Janssen <medhefgo@web.de> | 2021-11-17 11:11:23 +0100 |
---|---|---|
committer | Jan Janssen <medhefgo@web.de> | 2021-11-29 16:20:45 +0100 |
commit | 0a15a824d2505f2a5657075c7ab888f28b39fc0a (patch) | |
tree | e7c69719582be9afc84a8e7c5666779e6d51dd3b /src/boot/efi/util.c | |
parent | ccfbdbdcabd194bb14148a4f26cf4b3128a5bbf7 (diff) | |
download | systemd-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.c | 44 |
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); |