From: Tom Hughes Date: Fri, 29 May 2009 08:19:22 +0000 (+0000) Subject: Merge r10150 from trunk to fix #194429. X-Git-Tag: svn/VALGRIND_3_4_1~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=09716fdba2dc01d597924c9363fde4dee67949f0;p=thirdparty%2Fvalgrind.git Merge r10150 from trunk to fix #194429. git-svn-id: svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_4_BRANCH@10168 --- diff --git a/coregrind/m_initimg/initimg-linux.c b/coregrind/m_initimg/initimg-linux.c index 56a5aa00a2..57f72f1b47 100644 --- a/coregrind/m_initimg/initimg-linux.c +++ b/coregrind/m_initimg/initimg-linux.c @@ -339,6 +339,10 @@ static HChar** setup_client_env ( HChar** origenv, const HChar* toolname) #define AT_UCACHEBSIZE 21 #endif /* AT_UCACHEBSIZE */ +#ifndef AT_RANDOM +#define AT_RANDOM 25 +#endif /* AT_RANDOM */ + #ifndef AT_SYSINFO #define AT_SYSINFO 32 #endif /* AT_SYSINFO */ @@ -485,6 +489,8 @@ Addr setup_client_stack( void* init_sp, for (cauxv = orig_auxv; cauxv->a_type != AT_NULL; cauxv++) { if (cauxv->a_type == AT_PLATFORM) stringsize += VG_(strlen)(cauxv->u.a_ptr) + 1; + else if (cauxv->a_type == AT_RANDOM) + stringsize += 16; auxsize += sizeof(*cauxv); } @@ -745,6 +751,15 @@ Addr setup_client_stack( void* init_sp, auxv->a_type = AT_IGNORE; break; + case AT_RANDOM: + /* points to 16 random bytes - we need to ensure this is + propagated to the client as glibc will assume it is + present if it is built for kernel 2.6.29 or later */ + auxv->u.a_ptr = strtab; + VG_(memcpy)(strtab, orig_auxv->u.a_ptr, 16); + strtab += 16; + break; + default: /* stomp out anything we don't know about */ VG_(debugLog)(2, "initimg",