summaryrefslogtreecommitdiff
path: root/debian/patches/exec-redzone0.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/exec-redzone0.patch')
-rw-r--r--debian/patches/exec-redzone0.patch36
1 files changed, 36 insertions, 0 deletions
diff --git a/debian/patches/exec-redzone0.patch b/debian/patches/exec-redzone0.patch
new file mode 100644
index 00000000..59398093
--- /dev/null
+++ b/debian/patches/exec-redzone0.patch
@@ -0,0 +1,36 @@
+From 08936efa78337cdd50676fbde2f61ae13c249a01 Mon Sep 17 00:00:00 2001
+From: Justus Winter <4winter@informatik.uni-hamburg.de>
+Date: Mon, 22 Sep 2014 17:59:57 +0200
+Subject: [PATCH] exec: redzone page zero before loading anything
+
+This prevents load_section from mapping any sections to page zero.
+
+* exec/exec.c (do_exec): Redzone page zero before loading anything.
+---
+ exec/exec.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/exec/exec.c b/exec/exec.c
+index 2fc1e44..0ecf2d3 100644
+--- a/exec/exec.c
++++ b/exec/exec.c
+@@ -1116,6 +1116,16 @@ do_exec (file_t file,
+ mach_port_destroy (oldtask, destroynames[i]);
+ }
+
++ /* Map page zero redzoned. */
++ {
++ vm_address_t addr = 0;
++ e.error = vm_map (newtask,
++ &addr, vm_page_size, 0, 0, MACH_PORT_NULL, 0, 1,
++ VM_PROT_NONE, VM_PROT_NONE, VM_INHERIT_COPY);
++ if (e.error)
++ goto out;
++ }
++
+ /* XXX this should be below
+ it is here to work around a vm_map kernel bug. */
+ if (interp.file != MACH_PORT_NULL)
+--
+2.1.0
+