summaryrefslogtreecommitdiff
path: root/errlog.c
diff options
context:
space:
mode:
authorSteve Langasek <steve.langasek@canonical.com>2019-02-09 21:28:06 -0800
committerSteve Langasek <steve.langasek@canonical.com>2019-02-09 21:32:44 -0800
commitab4c731c1dd379acd3e95971af57401fb0a650a1 (patch)
tree6a26fb8d0746cbbaa6c2d4b242c73442bcc1df06 /errlog.c
parent0d63079c7da8e86104ce4bbdae2f6cb8d2ea40c6 (diff)
parent9c12130f9cd2ae11a9336813dd1f1669c0b64ad0 (diff)
downloadefi-boot-shim-debian/15+1533136590.3beb971-1.tar.gz
efi-boot-shim-debian/15+1533136590.3beb971-1.zip
* New upstream release.debian/15+1533136590.3beb971-1
- debian/patches/second-stage-path: dropped; the default loader path now includes an arch suffix. - debian/patches/sbsigntool-no-pesign: dropped; no longer needed. * Drop remaining patches that were not being applied. * Sync packaging from Ubuntu: - debian/copyright: Update upstream source location. - debian/control: add a Build-Depends on libelf-dev. - Enable arm64 build. - debian/patches/fixup_git.patch: don't run git in clean; we're not really in a git tree. - debian/rules, debian/shim.install: use the upstream install target as intended, and move files to the target directory using dh_install. - define RELEASE and COMMIT_ID for the snapshot. - Set ENABLE_HTTPBOOT to enable the HTTP Boot feature. - Update dh_auto_build/dh_auto_clean/dh_auto_install for new upstream options: set MAKELEVEL. - Define an EFI_ARCH variable, and use that for paths to shim. This makes it possible to build a shim for other architectures than amd64. - Set EFIDIR=$distro for dh_auto_install; that will let files be installed in the "right" final directories, and makes boot.csv for us. - Set ENABLE_SHIM_CERT, to keep using ephemeral self-signed certs built at compile-time for MokManager and fallback. - Set ENABLE_SBSIGN, to use sbsign instead of pesign for signing fallback and MokManager.
Diffstat (limited to 'errlog.c')
-rw-r--r--errlog.c86
1 files changed, 86 insertions, 0 deletions
diff --git a/errlog.c b/errlog.c
new file mode 100644
index 00000000..18be4822
--- /dev/null
+++ b/errlog.c
@@ -0,0 +1,86 @@
+/*
+ * errlog.c
+ * Copyright 2017 Peter Jones <pjones@redhat.com>
+ *
+ * Distributed under terms of the GPLv3 license.
+ */
+
+#include "shim.h"
+
+static CHAR16 **errs = NULL;
+static UINTN nerrs = 0;
+
+EFI_STATUS
+VLogError(const char *file, int line, const char *func, CHAR16 *fmt, va_list args)
+{
+ va_list args2;
+ UINTN size = 0, size2;
+ CHAR16 **newerrs;
+
+ size = SPrint(NULL, 0, L"%a:%d %a() ", file, line, func);
+ va_copy(args2, args);
+ size2 = VSPrint(NULL, 0, fmt, args2);
+ va_end(args2);
+
+ newerrs = ReallocatePool(errs, (nerrs + 1) * sizeof(*errs),
+ (nerrs + 3) * sizeof(*errs));
+ if (!newerrs)
+ return EFI_OUT_OF_RESOURCES;
+
+ newerrs[nerrs] = AllocatePool(size*2+2);
+ if (!newerrs[nerrs])
+ return EFI_OUT_OF_RESOURCES;
+ newerrs[nerrs+1] = AllocatePool(size2*2+2);
+ if (!newerrs[nerrs+1])
+ return EFI_OUT_OF_RESOURCES;
+
+ SPrint(newerrs[nerrs], size*2+2, L"%a:%d %a() ", file, line, func);
+ va_copy(args2, args);
+ VSPrint(newerrs[nerrs+1], size2*2+2, fmt, args2);
+ va_end(args2);
+
+ nerrs += 2;
+ newerrs[nerrs] = NULL;
+ errs = newerrs;
+
+ return EFI_SUCCESS;
+}
+
+EFI_STATUS
+LogError_(const char *file, int line, const char *func, CHAR16 *fmt, ...)
+{
+ va_list args;
+ EFI_STATUS efi_status;
+
+ va_start(args, fmt);
+ efi_status = VLogError(file, line, func, fmt, args);
+ va_end(args);
+
+ return efi_status;
+}
+
+VOID
+PrintErrors(VOID)
+{
+ UINTN i;
+
+ if (!verbose)
+ return;
+
+ for (i = 0; i < nerrs; i++)
+ console_print(L"%s", errs[i]);
+}
+
+VOID
+ClearErrors(VOID)
+{
+ UINTN i;
+
+ for (i = 0; i < nerrs; i++)
+ FreePool(errs[i]);
+ FreePool(errs);
+ nerrs = 0;
+ errs = NULL;
+}
+
+// vim:fenc=utf-8:tw=75