diff options
| author | Peter Jones <pjones@redhat.com> | 2017-08-31 14:49:48 -0400 |
|---|---|---|
| committer | Peter Jones <pjones@redhat.com> | 2017-08-31 15:13:45 -0400 |
| commit | 96b347c200b2401d02f576b47da8a49cc6286b4b (patch) | |
| tree | fc4205f201e1b7e81f8b454d6db3734588cb45ee | |
| parent | aaf8049c3995dd2c0c42087a601c262545f36b9c (diff) | |
| download | efi-boot-shim-96b347c200b2401d02f576b47da8a49cc6286b4b.tar.gz efi-boot-shim-96b347c200b2401d02f576b47da8a49cc6286b4b.zip | |
Add a mechanism to print openssl errors
Signed-off-by: Peter Jones <pjones@redhat.com>
| -rw-r--r-- | include/console.h | 3 | ||||
| -rw-r--r-- | lib/Makefile | 3 | ||||
| -rw-r--r-- | lib/console.c | 30 |
3 files changed, 32 insertions, 4 deletions
diff --git a/include/console.h b/include/console.h index 9d39841c..e9cf2858 100644 --- a/include/console.h +++ b/include/console.h @@ -88,6 +88,9 @@ extern UINT8 verbose; __dprinta_ret; \ }) +extern EFI_STATUS print_crypto_errors(EFI_STATUS rc, char *file, const char *func, int line); +#define crypterr(rc) print_crypto_errors((rc), __FILE__, __func__, __LINE__) + extern VOID msleep(unsigned long msecs); #endif /* _SHIM_LIB_CONSOLE_H */ diff --git a/lib/Makefile b/lib/Makefile index ad18f391..db5ff711 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -2,7 +2,8 @@ TARGET = lib.a LIBFILES = simple_file.o guid.o console.o execute.o configtable.o shell.o variables.o security_policy.o -EFI_INCLUDES = -I$(EFI_INCLUDE) -I$(EFI_INCLUDE)/$(ARCH) -I$(EFI_INCLUDE)/protocol -I$(TOPDIR)/../include +EFI_INCLUDES = -I$(EFI_INCLUDE) -I$(EFI_INCLUDE)/$(ARCH) -I$(EFI_INCLUDE)/protocol -I$(TOPDIR)/../include \ + -I$(TOPDIR)/CryptLib/Include/openssl/ lib.a: $(LIBFILES) $(AR) rcs lib.a $(LIBFILES) diff --git a/lib/console.c b/lib/console.c index 31ac110d..cd8d1de2 100644 --- a/lib/console.c +++ b/lib/console.c @@ -6,10 +6,14 @@ */ #include <efi.h> #include <efilib.h> - +#include <stdarg.h> +#include <stdbool.h> #include <console.h> #include <variables.h> #include <errors.h> +#include <Library/BaseCryptLib.h> +#include <openssl/err.h> +#include <openssl/crypto.h> static EFI_GUID SHIM_LOCK_GUID = { 0x605dab50, 0xe046, 0x4300, {0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23} }; @@ -383,7 +387,6 @@ err_string ( return L""; } - void console_error(CHAR16 *err, EFI_STATUS status) @@ -396,7 +399,8 @@ console_error(CHAR16 *err, EFI_STATUS status) }; CHAR16 str[512]; - SPrint(str, sizeof(str), L"%s: (%d) %s", err, status, err_string(status)); + SPrint(str, sizeof(str), L"%s: (0x%x) %s", err, status, err_string(status)); + err_arr[2] = str; @@ -460,6 +464,26 @@ VOID setup_console (int text) uefi_call_wrapper(concon->SetMode, 2, concon, new_mode); } +static int +print_errors_cb(const char *str, size_t len, void *u) +{ + Print(L"%a", str); + + return len; +} + +EFI_STATUS +print_crypto_errors(EFI_STATUS rc, char *file, const char *func, int line) +{ + if (!(verbose && EFI_ERROR(rc))) + return rc; + + Print(L"SSL Error: %a:%d %a(): %r\n", file, line, func, rc); + ERR_print_errors_cb(print_errors_cb, NULL); + + return rc; +} + VOID msleep(unsigned long msecs) { |
