Skip to content

Commit

Permalink
2005-02-07 Ulrich Drepper <drepper@redhat.com>
Browse files Browse the repository at this point in the history
	* sysdeps/unix/sysv/linux/dl-execstack.c: Include sysdep.h.
	(_dl_make_stack_executable): Make sure registers are set correctly.
  • Loading branch information
Roland McGrath committed Jul 18, 2005
1 parent f8d7840 commit db9535f
Showing 1 changed file with 20 additions and 4 deletions.
24 changes: 20 additions & 4 deletions sysdeps/unix/sysv/linux/dl-execstack.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include <stdbool.h>
#include <stackinfo.h>
#include <caller.h>
#include <sysdep.h>

#include "kernel-features.h"

Expand All @@ -38,6 +39,7 @@ _dl_make_stack_executable (void **stack_endp)
/* This gives us the highest/lowest page that needs to be changed. */
uintptr_t page = ((uintptr_t) *stack_endp
& -(intptr_t) GLRO(dl_pagesize));
int result = 0;

/* Challenge the caller. */
if (__builtin_expect (__check_caller (RETURN_ADDRESS (0),
Expand All @@ -60,7 +62,10 @@ _dl_make_stack_executable (void **stack_endp)
no_growsupdown = true;
else
# endif
return errno;
{
result = errno;
goto out;
}
}
#endif

Expand All @@ -85,7 +90,10 @@ _dl_make_stack_executable (void **stack_endp)
else
{
if (errno != ENOMEM) /* Unexpected failure mode. */
return errno;
{
result = errno;
goto out;
}

if (size == GLRO(dl_pagesize))
/* We just tried to mprotect the top hole page and failed.
Expand All @@ -108,7 +116,10 @@ _dl_make_stack_executable (void **stack_endp)
else
{
if (errno != ENOMEM) /* Unexpected failure mode. */
return errno;
{
result = errno;
goto out;
}

if (size == GLRO(dl_pagesize))
/* We just tried to mprotect the lowest hole page and failed.
Expand All @@ -133,6 +144,11 @@ _dl_make_stack_executable (void **stack_endp)
/* Remember that we changed the permission. */
GL(dl_stack_flags) |= PF_X;

return 0;
out:
#ifdef check_consistency
check_consistency ();
#endif

return result;
}
rtld_hidden_def (_dl_make_stack_executable)

0 comments on commit db9535f

Please sign in to comment.