]> git.pld-linux.org Git - packages/XFree86.git/blame - XFree86-elfloader-linux-non-exec-stack.patch
- outdated
[packages/XFree86.git] / XFree86-elfloader-linux-non-exec-stack.patch
CommitLineData
b88abb6c
AM
1diff -urN xc-old/programs/Xserver/hw/xfree86/loader/elfloader.c xc/programs/Xserver/hw/xfree86/loader/elfloader.c
2--- xc-old/programs/Xserver/hw/xfree86/loader/elfloader.c 2003-11-02 03:16:18.000000000 -0500
3+++ xc/programs/Xserver/hw/xfree86/loader/elfloader.c 2003-11-02 03:21:53.000000000 -0500
4@@ -921,7 +921,7 @@
5 ErrorF("ELFCreateGOT() Unable to reallocate memory!!!!\n");
6 return FALSE;
7 }
8-# if defined(linux) && defined(__ia64__) || defined(__OpenBSD__)
9+# if defined(linux) || defined(__OpenBSD__)
10 {
11 unsigned long page_size = getpagesize();
12 unsigned long round;
13@@ -2761,10 +2761,16 @@
14 elffile->lsection[j].size = SecSize(i);
15 elffile->lsection[j].flags = flags;
16 switch (SecType(i)) {
17-#ifdef __OpenBSD__
18+#if defined(linux) || defined(__OpenBSD__)
19 case SHT_PROGBITS:
20- mprotect(elffile->lsection[j].saddr, SecSize(i),
21- PROT_READ | PROT_WRITE | PROT_EXEC);
22+ {
23+ unsigned long page_size = getpagesize();
24+ unsigned long round;
25+
26+ round = (unsigned long)elffile->lsection[j].saddr & (page_size -1);
27+ mprotect( (char *)elffile->lsection[j].saddr - round,
28+ SecSize(i) + round, PROT_READ|PROT_WRITE|PROT_EXEC);
29+ }
30 break;
31 #endif
32 case SHT_SYMTAB:
33@@ -2959,7 +2965,7 @@
34 ErrorF("Unable to allocate ELF sections\n");
35 return NULL;
36 }
37-# if defined(linux) && defined(__ia64__) || defined(__OpenBSD__)
38+# if defined(linux) || defined(__OpenBSD__)
39 {
40 unsigned long page_size = getpagesize();
41 unsigned long round;
This page took 0.038293 seconds and 4 git commands to generate.