]> git.pld-linux.org Git - packages/XFree86.git/blame - XFree86-elfloader-linux-non-exec-stack.patch
- 4.8.0 (probably the last XFree86 version ever, for comparison and archival reasons)
[packages/XFree86.git] / XFree86-elfloader-linux-non-exec-stack.patch
CommitLineData
62f02f09
JB
1--- xc/programs/Xserver/hw/xfree86/loader/elfloader.c.orig 2007-04-09 17:37:17.000000000 +0200
2+++ xc/programs/Xserver/hw/xfree86/loader/elfloader.c 2007-12-02 16:51:49.442062089 +0100
3@@ -1165,7 +1165,7 @@
b88abb6c
AM
4 ErrorF("ELFCreateGOT() Unable to reallocate memory!!!!\n");
5 return FALSE;
6 }
62f02f09
JB
7-# if (defined(linux) && defined(__ia64__)) || \
8+# if defined(linux) || \
9 defined(__OpenBSD__) || defined(__NetBSD__)
b88abb6c
AM
10 {
11 unsigned long page_size = getpagesize();
62f02f09 12@@ -3483,10 +3483,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:
62f02f09 31@@ -3688,7 +3694,7 @@
b88abb6c
AM
32 ErrorF("Unable to allocate ELF sections\n");
33 return NULL;
34 }
62f02f09
JB
35-# if (defined(linux) && defined(__ia64__)) || \
36+# if defined(linux) || \
37 defined(__OpenBSD__) || defined(__NetBSD__)
b88abb6c
AM
38 {
39 unsigned long page_size = getpagesize();
This page took 0.073085 seconds and 4 git commands to generate.