summaryrefslogtreecommitdiff
path: root/debian/patches/ndebug0001-i386-Fix-error-handling.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/ndebug0001-i386-Fix-error-handling.patch')
-rw-r--r--debian/patches/ndebug0001-i386-Fix-error-handling.patch59
1 files changed, 59 insertions, 0 deletions
diff --git a/debian/patches/ndebug0001-i386-Fix-error-handling.patch b/debian/patches/ndebug0001-i386-Fix-error-handling.patch
new file mode 100644
index 0000000..5a99ed3
--- /dev/null
+++ b/debian/patches/ndebug0001-i386-Fix-error-handling.patch
@@ -0,0 +1,59 @@
+From 82513815bde3005f20ab904d9d64673b53b6a7c4 Mon Sep 17 00:00:00 2001
+From: Justus Winter <justus@gnupg.org>
+Date: Fri, 15 Apr 2016 14:38:52 +0200
+Subject: [PATCH gnumach 1/2] i386: Fix error handling
+
+* i386/i386at/model_dep.c (i386at_init): Fix error handling.
+
+Signed-off-by: Justus Winter <justus@gnupg.org>
+---
+ i386/i386at/model_dep.c | 15 +++++++++++----
+ 1 file changed, 11 insertions(+), 4 deletions(-)
+
+diff --git a/i386/i386at/model_dep.c b/i386/i386at/model_dep.c
+index 62763ae..679d524 100644
+--- a/i386/i386at/model_dep.c
++++ b/i386/i386at/model_dep.c
+@@ -301,7 +301,8 @@ i386at_init(void)
+ * is too far in physical memory. */
+ if (boot_info.flags & MULTIBOOT_CMDLINE) {
+ int len = strlen ((char*)phystokv(boot_info.cmdline)) + 1;
+- assert(init_alloc_aligned(round_page(len), &addr));
++ if (! init_alloc_aligned(round_page(len), &addr))
++ panic("could not allocate memory for multiboot command line");
+ kernel_cmdline = (char*) phystokv(addr);
+ memcpy(kernel_cmdline, (void *)phystokv(boot_info.cmdline), len);
+ boot_info.cmdline = addr;
+@@ -311,20 +312,26 @@ i386at_init(void)
+ struct multiboot_module *m;
+ int i;
+
+- assert(init_alloc_aligned(round_page(boot_info.mods_count * sizeof(*m)), &addr));
++ if (! init_alloc_aligned(
++ round_page(boot_info.mods_count * sizeof(*m)), &addr))
++ panic("could not allocate memory for multiboot modules");
+ m = (void*) phystokv(addr);
+ memcpy(m, (void*) phystokv(boot_info.mods_addr), boot_info.mods_count * sizeof(*m));
+ boot_info.mods_addr = addr;
+
+ for (i = 0; i < boot_info.mods_count; i++) {
+ vm_size_t size = m[i].mod_end - m[i].mod_start;
+- assert(init_alloc_aligned(round_page(size), &addr));
++ if (! init_alloc_aligned(round_page(size), &addr))
++ panic("could not allocate memory for multiboot "
++ "module %d", i);
+ memcpy((void*) phystokv(addr), (void*) phystokv(m[i].mod_start), size);
+ m[i].mod_start = addr;
+ m[i].mod_end = addr + size;
+
+ size = strlen((char*) phystokv(m[i].string)) + 1;
+- assert(init_alloc_aligned(round_page(size), &addr));
++ if (! init_alloc_aligned(round_page(size), &addr))
++ panic("could not allocate memory for multiboot "
++ "module command line %d", i);
+ memcpy((void*) phystokv(addr), (void*) phystokv(m[i].string), size);
+ m[i].string = addr;
+ }
+--
+2.1.4
+