lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.64.0705161851120.25986@twin.jikos.cz>
Date:	Wed, 16 May 2007 19:14:39 +0200 (CEST)
From:	Jiri Kosina <jkosina@...e.cz>
To:	Jan Kratochvil <honza@...os.cz>
cc:	Andrew Morton <akpm@...ux-foundation.org>,
	Ingo Molnar <mingo@...e.hu>, linux-kernel@...r.kernel.org
Subject: Re: [PATCH][RESEND] PIE randomization

On Sat, 12 May 2007, Jiri Kosina wrote:

> However, I seem to get "soft" hang on boot with this patch, 
> approximately at the time the init should be executed. The system is not 
> completely stuck - interrupts are delivered, keyboard is working, 
> alt-sysrq-t dumps proper output, but userspace doesn't seem to get 
> started. This happens on i386, didn't try on other archs.

Hi Jan,

I finally had time to look at it a little bit - I think you omitted 
porting of proper handling of *interp_load_addr == 0, which made my box 
hang. The patch below, when applied on top of what you have sent, makes it 
work again and also the randomization for ET_DYN executables seems to work 
OK. 

Could you please refresh your patch, update the Changelog in a proper way 
and resubmit?

Thanks.


diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index be6671e..8406f9a 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -347,7 +347,7 @@ static inline unsigned long total_mappin
    an ELF header */
 
 static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex,
-		struct file *interpreter, unsigned long *interp_load_addr,
+		struct file *interpreter, unsigned long *interp_map_addr,
 		unsigned long no_base)
 {
 	struct elf_phdr *elf_phdata;
@@ -421,6 +421,9 @@ static unsigned long load_elf_interp(str
 
 			map_addr = elf_map(interpreter, load_addr + vaddr,
 					   eppnt, elf_prot, elf_type, total_size);
+			total_size = 0;
+			if (!*interp_map_addr)
+				*interp_map_addr = map_addr;
 			error = map_addr;
 			if (BAD_ADDR(map_addr))
 				goto out_close;


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ