Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [day] [month] [year] [list]
Message-Id: <A19A4EED-F081-47A3-831F-3A7E5F5173C3@cognitive-electronics.com>
Date: Mon, 3 Nov 2014 09:06:10 -0500
From: Richard Gorton <rcgorton@...nitive-electronics.com>
To: "musl@...ts.openwall.com" <musl@...ts.openwall.com>
Subject: small patches for src/env

Attached is a small patch, mostly comments for a couple of files in src/env

Regards,

	Richard
	rcgorton@...-e.com

Index: __init_tls.c
===================================================================
--- __init_tls.c	(revision 47)
+++ __init_tls.c	(working copy)
@@ -22,7 +22,8 @@
 
 #ifndef SHARED
 
-static long long builtin_tls[(sizeof(struct pthread) + 64)/sizeof(long long)];
+#define SMALL_NUM_TLS_VARS  16
+static long long builtin_tls[(sizeof(struct pthread) + (sizeof(uintptr_t) * SMALL_NUM_TLS_VARS))/sizeof(long long)];
 
 struct tls_image {
 	void *image;
@@ -60,6 +61,10 @@
 typedef Elf64_Phdr Phdr;
 #endif
 
+/*
+ * See ELF Handling for Thread-Local Storage:
+ *  http://www.akkadia.org/drepper/tls.pdf
+ */
 void __init_tls(size_t *aux)
 {
 	unsigned char *p;
Index: __stack_chk_fail.c
===================================================================
--- __stack_chk_fail.c	(revision 47)
+++ __stack_chk_fail.c	(working copy)
@@ -4,6 +4,12 @@
 
 uintptr_t __stack_chk_guard;
 
+/*
+ * The objective is to have some additional entropy for the canary.
+ * The value (1103515245) is an LCG: Linear Congruential Generator
+ *  http://en.wikipedia.org/wiki/Linear_congruential_generator
+ * and matches the value used elsewhere in musl (src/prng) for pseudo-random number generation
+ */
 void __init_ssp(void *entropy)
 {
 	if (entropy) memcpy(&__stack_chk_guard, entropy, sizeof(uintptr_t));
Index: __libc_start_main.c
===================================================================
--- __libc_start_main.c	(revision 47)
+++ __libc_start_main.c	(working copy)
@@ -23,6 +23,16 @@
 extern size_t __hwcap, __sysinfo;
 extern char *__progname, *__progname_full;
 
+/*
+ * The initial process stack for ELF executables is described in the System V Application Binary Interface
+ * Architecture processor supplement, such as the one for AMD64 == x86_64:
+ *  http://refspecs.linux-foundation.org/elf/x86_64-abi-0.95.pdf
+ * Search for "Initial Process Stack"
+ *
+ * Basically, the order of content is:
+ *  argc, argv[] (null terminated), envp[] (null terminated), auxv (null terminated)
+ *
+ */
 #ifndef SHARED
 static
 #endif



Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.