}
EFI_STATUS efivar_get(CHAR16 *name, CHAR16 **value) {
- CHAR8 *buf;
+ _cleanup_freepool_ CHAR8 *buf = NULL;
CHAR16 *val;
UINTN size;
EFI_STATUS err;
return err;
val = StrDuplicate((CHAR16 *)buf);
- if (!val) {
- FreePool(buf);
+ if (!val)
return EFI_OUT_OF_RESOURCES;
- }
*value = val;
return EFI_SUCCESS;
}
EFI_STATUS efivar_get_int(CHAR16 *name, UINTN *i) {
- CHAR16 *val;
+ _cleanup_freepool_ CHAR16 *val = NULL;
EFI_STATUS err;
err = efivar_get(name, &val);
- if (!EFI_ERROR(err)) {
+ if (!EFI_ERROR(err))
*i = Atoi(val);
- FreePool(val);
- }
+
return err;
}
EFI_STATUS efivar_get_raw(const EFI_GUID *vendor, CHAR16 *name, CHAR8 **buffer, UINTN *size) {
- CHAR8 *buf;
+ _cleanup_freepool_ CHAR8 *buf = NULL;
UINTN l;
EFI_STATUS err;
err = uefi_call_wrapper(RT->GetVariable, 5, name, (EFI_GUID *)vendor, NULL, &l, buf);
if (!EFI_ERROR(err)) {
*buffer = buf;
+ buf = NULL;
if (size)
*size = l;
- } else
- FreePool(buf);
- return err;
+ }
+ return err;
}
VOID efivar_set_time_usec(CHAR16 *name, UINT64 usec) {
EFI_STATUS file_read(EFI_FILE_HANDLE dir, CHAR16 *name, UINTN off, UINTN size, CHAR8 **content, UINTN *content_size) {
EFI_FILE_HANDLE handle;
- CHAR8 *buf;
+ _cleanup_freepool_ CHAR8 *buf = NULL;
EFI_STATUS err;
err = uefi_call_wrapper(dir->Open, 5, dir, &handle, name, EFI_FILE_MODE_READ, 0ULL);
return err;
if (size == 0) {
- EFI_FILE_INFO *info;
+ _cleanup_freepool_ EFI_FILE_INFO *info;
info = LibFileInfo(handle);
size = info->FileSize+1;
- FreePool(info);
}
if (off > 0) {
if (!EFI_ERROR(err)) {
buf[size] = '\0';
*content = buf;
+ buf = NULL;
if (content_size)
*content_size = size;
- } else
- FreePool(buf);
-
+ }
uefi_call_wrapper(handle->Close, 1, handle);
+
return err;
}