]> git.pld-linux.org Git - packages/XFree86.git/blob - XFree86-elfloader-linux-non-exec-stack.patch
- outdated
[packages/XFree86.git] / XFree86-elfloader-linux-non-exec-stack.patch
1 diff -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.044627 seconds and 3 git commands to generate.