From: Tom Hughes Date: Mon, 18 Jul 2005 23:18:10 +0000 (+0000) Subject: Check members of the stack_t structure passed to sigaltstack X-Git-Tag: svn/VALGRIND_3_0_0~150 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5914fa6a53abecfa40eca88b00c22328eea8a45f;p=thirdparty%2Fvalgrind.git Check members of the stack_t structure passed to sigaltstack individually to avoid problems with padding on 64 bit platforms. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4168 --- diff --git a/coregrind/m_syswrap/syswrap-generic.c b/coregrind/m_syswrap/syswrap-generic.c index d3b02d4b18..c86691dee8 100644 --- a/coregrind/m_syswrap/syswrap-generic.c +++ b/coregrind/m_syswrap/syswrap-generic.c @@ -5275,7 +5275,10 @@ PRE(sys_sigaltstack) PRE_REG_READ2(int, "sigaltstack", const vki_stack_t *, ss, vki_stack_t *, oss); if (ARG1 != 0) { - PRE_MEM_READ( "sigaltstack(ss)", ARG1, sizeof(vki_stack_t) ); + const vki_stack_t *ss = (vki_stack_t *)ARG1; + PRE_MEM_READ( "sigaltstack(ss)", (Addr)&ss->ss_sp, sizeof(ss->ss_sp) ); + PRE_MEM_READ( "sigaltstack(ss)", (Addr)&ss->ss_flags, sizeof(ss->ss_flags) ); + PRE_MEM_READ( "sigaltstack(ss)", (Addr)&ss->ss_size, sizeof(ss->ss_size) ); } if (ARG2 != 0) { PRE_MEM_WRITE( "sigaltstack(oss)", ARG2, sizeof(vki_stack_t) );