diff options
| -rw-r--r-- | shim.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -50,6 +50,8 @@ #include <Library/BaseCryptLib.h> +#include <stdint.h> + #define FALLBACK L"\\fb" EFI_ARCH L".efi" #define MOK_MANAGER L"\\mm" EFI_ARCH L".efi" @@ -111,11 +113,17 @@ typedef struct { /* * Perform basic bounds checking of the intra-image pointers */ -static void *ImageAddress (void *image, unsigned int size, unsigned int address) +static void *ImageAddress (void *image, uint64_t size, uint64_t address) { + /* ensure our local pointer isn't bigger than our size */ if (address > size) return NULL; + /* Insure our math won't overflow */ + if (UINT64_MAX - address < (uint64_t)image) + return NULL; + + /* return the absolute pointer */ return image + address; } |
