mirror of
				https://git.proxmox.com/git/efi-boot-shim
				synced 2025-11-04 14:59:04 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			156 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			156 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
// SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
/*
 | 
						|
 * model.c - modeling file for coverity
 | 
						|
 * Copyright Peter Jones <pjones@redhat.com>
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef __COVERITY__
 | 
						|
/* This is so vim's Syntastic checker won't yell about all these. */
 | 
						|
extern void __coverity_string_size_sanitize__(int);
 | 
						|
extern void __coverity_negative_sink__(int);
 | 
						|
extern void *__coverity_alloc_nosize__(void);
 | 
						|
extern void __coverity_writeall0__(void *);
 | 
						|
extern void *__coverity_alloc__(int);
 | 
						|
extern void __coverity_sleep__();
 | 
						|
extern void __coverity_tainted_data_sanitize__(void *);
 | 
						|
extern void __coverity_free__(void *);
 | 
						|
#endif
 | 
						|
 | 
						|
void *
 | 
						|
OBJ_dup(void *o)
 | 
						|
{
 | 
						|
	return __coverity_alloc_nosize__();
 | 
						|
}
 | 
						|
 | 
						|
int
 | 
						|
UTF8_getc(const unsigned char *str, int len, unsigned long *val)
 | 
						|
{
 | 
						|
	/* You can't quite express the right thing here, so instead we're
 | 
						|
	 * telling covscan that if len is a certain value, the string has
 | 
						|
	 * been checked for having a NUL at the right place.  Ideally what
 | 
						|
	 * we'd tell it is it's never allowed to give us a string shorter
 | 
						|
	 * than a certain length if certain bits (i.e. the UTF-8 surrogate
 | 
						|
	 * length bits) are set. */
 | 
						|
	if (len <= 0) {
 | 
						|
		__coverity_string_size_sanitize__(0);
 | 
						|
		return 0;
 | 
						|
	} else if (len <= 6) {
 | 
						|
		__coverity_string_size_sanitize__(0);
 | 
						|
		return len;
 | 
						|
	}
 | 
						|
	return -2;
 | 
						|
}
 | 
						|
 | 
						|
typedef unsigned long long u64;
 | 
						|
typedef struct {
 | 
						|
	unsigned long long hi;
 | 
						|
	unsigned long long lo;
 | 
						|
} u128;
 | 
						|
 | 
						|
void
 | 
						|
gcm_gmult_4bit(u64 Xi[2], u128 Htable[16])
 | 
						|
{
 | 
						|
	__coverity_tainted_data_sanitize__(Htable);
 | 
						|
}
 | 
						|
 | 
						|
void
 | 
						|
msleep(int n)
 | 
						|
{
 | 
						|
	__coverity_sleep__();
 | 
						|
}
 | 
						|
 | 
						|
/* From MdePkg/Include/Base.h or so */
 | 
						|
typedef unsigned long long UINT64;
 | 
						|
typedef unsigned long UINTN;
 | 
						|
typedef long INTN;
 | 
						|
typedef UINT64 EFI_PHYSICAL_ADDRESS;
 | 
						|
typedef UINTN RETURN_STATUS;
 | 
						|
typedef RETURN_STATUS EFI_STATUS;
 | 
						|
 | 
						|
#define MAX_BIT     (1ULL << (sizeof (INTN) * 8 - 1))
 | 
						|
#define MAX_INTN   ((INTN)~MAX_BIT)
 | 
						|
 | 
						|
#define ENCODE_ERROR(StatusCode)     ((RETURN_STATUS)(MAX_BIT | (StatusCode)))
 | 
						|
#define ENCODE_WARNING(StatusCode)   ((RETURN_STATUS)(StatusCode))
 | 
						|
#define RETURN_ERROR(StatusCode)     (((INTN)(RETURN_STATUS)(StatusCode)) < 0)
 | 
						|
#define RETURN_SUCCESS               0
 | 
						|
#define RETURN_INVALID_PARAMETER     ENCODE_ERROR (2)
 | 
						|
#define RETURN_OUT_OF_RESOURCES      ENCODE_ERROR (9)
 | 
						|
 | 
						|
/* From MdePkg/Include/Uefi/UefiBaseType.h */
 | 
						|
#define EFI_SUCCESS               RETURN_SUCCESS
 | 
						|
#define EFI_INVALID_PARAMETER     RETURN_INVALID_PARAMETER
 | 
						|
#define EFI_OUT_OF_RESOURCES      RETURN_OUT_OF_RESOURCES
 | 
						|
 | 
						|
#define EFI_PAGE_MASK 0xFFF
 | 
						|
#define EFI_PAGE_SHIFT 12
 | 
						|
#define EFI_SIZE_TO_PAGES(a) (((a) >> EFI_PAGE_SHIFT) + (((a) & EFI_PAGE_MASK) ? 1 : 0))
 | 
						|
#define EFI_PAGES_TO_SIZE(a) ((a) << EFI_PAGE_SHIFT)
 | 
						|
 | 
						|
/* From MdePkg/Include/Uefi/UefiMultiPhase.h */
 | 
						|
typedef enum {
 | 
						|
  EfiReservedMemoryType,
 | 
						|
  EfiLoaderCode,
 | 
						|
  EfiLoaderData,
 | 
						|
  EfiBootServicesCode,
 | 
						|
  EfiBootServicesData,
 | 
						|
  EfiRuntimeServicesCode,
 | 
						|
  EfiRuntimeServicesData,
 | 
						|
  EfiConventionalMemory,
 | 
						|
  EfiUnusableMemory,
 | 
						|
  EfiACPIReclaimMemory,
 | 
						|
  EfiACPIMemoryNVS,
 | 
						|
  EfiMemoryMappedIO,
 | 
						|
  EfiMemoryMappedIOPortSpace,
 | 
						|
  EfiPalCode,
 | 
						|
  EfiPersistentMemory,
 | 
						|
  EfiMaxMemoryType
 | 
						|
} EFI_MEMORY_TYPE;
 | 
						|
 | 
						|
/* From MdePkg/Include/Uefi/UefiSpec.h */
 | 
						|
typedef enum {
 | 
						|
	AllocateAnyPages,
 | 
						|
	AllocateMaxAddress,
 | 
						|
	AllocateAddress,
 | 
						|
	MaxAllocateType
 | 
						|
} EFI_ALLOCATE_TYPE;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
AllocatePages(EFI_ALLOCATE_TYPE Type,
 | 
						|
	      EFI_MEMORY_TYPE MemoryType,
 | 
						|
	      unsigned long Pages,
 | 
						|
	      EFI_PHYSICAL_ADDRESS *Memory)
 | 
						|
{
 | 
						|
	int has_memory;
 | 
						|
	unsigned long bytes = EFI_PAGES_TO_SIZE(Pages);
 | 
						|
 | 
						|
	if (Pages >= (unsigned long)((-1L) >> EFI_PAGE_SHIFT))
 | 
						|
		return EFI_INVALID_PARAMETER;
 | 
						|
 | 
						|
	__coverity_negative_sink__(bytes);
 | 
						|
	if (has_memory) {
 | 
						|
		*Memory = (EFI_PHYSICAL_ADDRESS)__coverity_alloc__(bytes);
 | 
						|
		return EFI_SUCCESS;
 | 
						|
	}
 | 
						|
	return EFI_OUT_OF_RESOURCES;
 | 
						|
}
 | 
						|
 | 
						|
void *
 | 
						|
AllocateZeroPool(int sz)
 | 
						|
{
 | 
						|
	void *ptr;
 | 
						|
 | 
						|
	__coverity_negative_sink__(sz);
 | 
						|
	ptr = __coverity_alloc__(sz);
 | 
						|
	__coverity_writeall0__(ptr);
 | 
						|
	return ptr;
 | 
						|
}
 | 
						|
 | 
						|
void
 | 
						|
FreePool(void *ptr)
 | 
						|
{
 | 
						|
	__coverity_free__(ptr);
 | 
						|
}
 | 
						|
 | 
						|
// vim:fenc=utf-8:tw=75
 |