Skip to content

Commit

Permalink
* elf/tst-execstack.c (do_test): Don't fail if SELinux forbids
Browse files Browse the repository at this point in the history
	executable stacks.
  • Loading branch information
Ulrich Drepper committed Dec 17, 2007
1 parent be8c150 commit d9961b6
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 3 deletions.
3 changes: 3 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
2007-12-16 Ulrich Drepper <drepper@redhat.com>

* elf/tst-execstack.c (do_test): Don't fail if SELinux forbids
executable stacks.

* malloc/malloc.c (public_mTRIm): Iterate over all arenas and call
mTRIm for all of them.
(mTRIm): Additionally iterate over all free blocks and use madvise
Expand Down
41 changes: 38 additions & 3 deletions elf/tst-execstack.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
on load of a DSO that requires executable stacks. */

#include <dlfcn.h>
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
Expand Down Expand Up @@ -45,9 +46,43 @@ waiter_thread (void *arg)
}
#endif


static bool allow_execstack = true;


static int
do_test (void)
{
/* Check whether SELinux is enabled and disallows executable stacks. */
FILE *fp = fopen ("/selinux/enforce", "r");
if (fp != NULL)
{
char *line = NULL;
size_t linelen = 0;

bool enabled = false;
ssize_t n = getline (&line, &linelen, fp);
if (n > 0 && line[0] != '0')
enabled = true;

fclose (fp);

if (enabled)
{
fp = fopen ("/selinux/booleans/allow_execstack", "r");
if (fp != NULL)
{
n = getline (&line, &linelen, fp);
if (n > 0 && line[0] == '0')
allow_execstack = false;
}

fclose (fp);
}
}

printf ("executable stacks %sallowed\n", allow_execstack ? "" : "not ");

static void *f; /* Address of this is used in other threads. */

#if USE_PTHREADS
Expand Down Expand Up @@ -77,7 +112,7 @@ do_test (void)
if (h == NULL)
{
printf ("cannot load: %s\n", dlerror ());
return 1;
return allow_execstack;
}

f = dlsym (h, "tryme");
Expand Down Expand Up @@ -113,10 +148,10 @@ do_test (void)
Let them run to test it. */
pthread_barrier_wait (&go_barrier);

pthread_exit (0);
pthread_exit (! allow_execstack);
#endif

return 0;
return ! allow_execstack;
}

static void
Expand Down

0 comments on commit d9961b6

Please sign in to comment.