]> git.pld-linux.org Git - packages/glibc.git/blob - glibc-pax_dl-execstack.patch
- updated for 2.3.5
[packages/glibc.git] / glibc-pax_dl-execstack.patch
1 Patch by: Robert Connolly <robert at linuxfromscratch dot org> (ashes)
2
3 diff -Nru glibc-2.3.3.old/sysdeps/unix/sysv/linux/dl-execstack.c glibc-2.3.3/sysdeps/unix/sysv/linux/dl-execstack.c
4 --- glibc-2.3.3.old/sysdeps/unix/sysv/linux/dl-execstack.c      2004-09-24 01:40:02.663710000 -0400
5 +++ glibc-2.3.3/sysdeps/unix/sysv/linux/dl-execstack.c  2004-09-24 01:54:55.883919888 -0400
6 @@ -56,11 +56,17 @@
7                                         __stack_prot) == 0, 1))
8         goto return_success;
9  # if __ASSUME_PROT_GROWSUPDOWN == 0
10 -      if (errno == EINVAL)
11 +      if (errno == EINVAL) {
12         no_growsupdown = true;
13 -      else
14 +      } else {
15 +#  endif
16 +       if (errno == EACCES)            /* PAX is enabled */
17 +         return 0;
18 +       else
19 +         return errno;
20 +#  if __ASSUME_PROT_GROWSUPDOWN == 0
21 +      }
22  # endif
23 -       return errno;
24      }
25  #endif
26  
27 @@ -84,8 +90,11 @@
28         page -= size;
29        else
30         {
31 -         if (errno != ENOMEM)  /* Unexpected failure mode.  */
32 +         if (errno == EACCES) {        /* PAX is enabled */
33 +           return 0;
34 +         } else if (errno != ENOMEM) { /* Unexpected failure mode.  */
35             return errno;
36 +         }
37  
38           if (size == GLRO(dl_pagesize))
39             /* We just tried to mprotect the top hole page and failed.
40 @@ -107,8 +116,11 @@
41         page += size;
42        else
43         {
44 -         if (errno != ENOMEM)  /* Unexpected failure mode.  */
45 +         if (errno == EACCES) {        /* PAX is enabled */
46 +           return 0;
47 +         } else if (errno != ENOMEM) { /* Unexpected failure mode.  */
48             return errno;
49 +         }
50  
51           if (size == GLRO(dl_pagesize))
52             /* We just tried to mprotect the lowest hole page and failed.
This page took 0.029202 seconds and 4 git commands to generate.