]> git.pld-linux.org Git - packages/XFree86.git/blame - XFree86-elfloader-linux-non-exec-stack.patch
- use functions
[packages/XFree86.git] / XFree86-elfloader-linux-non-exec-stack.patch
CommitLineData
8cbc3a31
JB
1--- xc/programs/Xserver/hw/xfree86/loader/elfloader.c.orig 2006-04-08 19:53:39.000000000 +0200
2+++ xc/programs/Xserver/hw/xfree86/loader/elfloader.c 2007-05-01 08:40:52.720051459 +0200
3@@ -1168,7 +1168,7 @@
b88abb6c
AM
4 ErrorF("ELFCreateGOT() Unable to reallocate memory!!!!\n");
5 return FALSE;
6 }
8cbc3a31
JB
7-# if defined(linux) && defined(__ia64__) || defined(__OpenBSD__) || defined(__NetBSD__)
8+# if defined(linux) || defined(__OpenBSD__) || defined(__NetBSD__)
b88abb6c
AM
9 {
10 unsigned long page_size = getpagesize();
11 unsigned long round;
8cbc3a31 12@@ -3351,10 +3351,16 @@
b88abb6c
AM
13 elffile->lsection[j].size = SecSize(i);
14 elffile->lsection[j].flags = flags;
15 switch (SecType(i)) {
8cbc3a31
JB
16-#if defined(__OpenBSD__) || defined(__NetBSD__)
17+#if defined(linux) || defined(__OpenBSD__) || defined(__NetBSD__)
b88abb6c
AM
18 case SHT_PROGBITS:
19- mprotect(elffile->lsection[j].saddr, SecSize(i),
8cbc3a31
JB
20+ {
21+ unsigned long page_size = getpagesize();
22+ unsigned long round;
b88abb6c 23+
8cbc3a31
JB
24+ round = (unsigned long)elffile->lsection[j].saddr & (page_size -1);
25+ mprotect( (char*)elffile->lsection[j].saddr - round, SecSize(i) + round,
26 PROT_READ | PROT_WRITE | PROT_EXEC);
27+ }
b88abb6c
AM
28 break;
29 #endif
30 case SHT_SYMTAB:
8cbc3a31 31@@ -3556,7 +3562,7 @@
b88abb6c
AM
32 ErrorF("Unable to allocate ELF sections\n");
33 return NULL;
34 }
8cbc3a31
JB
35-# if defined(linux) && defined(__ia64__) || defined(__OpenBSD__) || defined(__NetBSD__)
36+# if defined(linux) || defined(__OpenBSD__) || defined(__NetBSD__)
b88abb6c
AM
37 {
38 unsigned long page_size = getpagesize();
39 unsigned long round;
This page took 0.109767 seconds and 4 git commands to generate.