public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] preserve personality flag bits across exec
@ 2010-02-12 17:12 Luck, Tony
  0 siblings, 0 replies; only message in thread
From: Luck, Tony @ 2010-02-12 17:12 UTC (permalink / raw)
  To: linux-ia64

In its <asm/elf.h> ia64 defines SET_PERSONALITY in a way that unconditionally
sets the personality of the current process to PER_LINUX, losing any flag bits
from the upper 3 bytes of current->personality.  This is wrong. Those bits are
intended to be inherited across exec (other code takes care of ensuring that
security sensitive bits like ADDR_NO_RANDOMIZE are not passed to unsuspecting
setuid/setgid applications).
Date: Fri, 12 Feb 2010 09:12:50 -0800
Message-Id: <4b758c12105653e560@agluck-desktop.sc.intel.com>

Signed-off-by: Tony Luck <tony.luck@intel.com>

---

Technically elf32_set_personality() should have this same fix applied,
but the whole of arch/ia64/ia32/ is going to be deleted in the next
merge window, so there seems little point.

diff --git a/arch/ia64/include/asm/elf.h b/arch/ia64/include/asm/elf.h
index e14108b..4c41656 100644
--- a/arch/ia64/include/asm/elf.h
+++ b/arch/ia64/include/asm/elf.h
@@ -201,7 +201,9 @@ extern void ia64_elf_core_copy_regs (struct pt_regs *src, elf_gregset_t dst);
    relevant until we have real hardware to play with... */
 #define ELF_PLATFORM	NULL
 
-#define SET_PERSONALITY(ex)	set_personality(PER_LINUX)
+#define SET_PERSONALITY(ex)	\
+	set_personality((current->personality & ~PER_MASK) | PER_LINUX)
+
 #define elf_read_implies_exec(ex, executable_stack)					\
 	((executable_stack!=EXSTACK_DISABLE_X) && ((ex).e_flags & EF_IA_64_LINUX_EXECUTABLE_STACK) != 0)
 

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2010-02-12 17:12 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-12 17:12 [PATCH] preserve personality flag bits across exec Luck, Tony

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox