|
From: <sv...@va...> - 2005-07-18 23:18:13
|
Author: tom
Date: 2005-07-19 00:18:10 +0100 (Tue, 19 Jul 2005)
New Revision: 4168
Log:
Check members of the stack_t structure passed to sigaltstack
individually to avoid problems with padding on 64 bit platforms.
Modified:
trunk/coregrind/m_syswrap/syswrap-generic.c
Modified: trunk/coregrind/m_syswrap/syswrap-generic.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syswrap/syswrap-generic.c 2005-07-18 22:45:55 UTC (=
rev 4167)
+++ trunk/coregrind/m_syswrap/syswrap-generic.c 2005-07-18 23:18:10 UTC (=
rev 4168)
@@ -5275,7 +5275,10 @@
PRE_REG_READ2(int, "sigaltstack",
const vki_stack_t *, ss, vki_stack_t *, oss);
if (ARG1 !=3D 0) {
- PRE_MEM_READ( "sigaltstack(ss)", ARG1, sizeof(vki_stack_t) );
+ const vki_stack_t *ss =3D (vki_stack_t *)ARG1;
+ PRE_MEM_READ( "sigaltstack(ss)", (Addr)&ss->ss_sp, sizeof(ss->ss_s=
p) );
+ PRE_MEM_READ( "sigaltstack(ss)", (Addr)&ss->ss_flags, sizeof(ss->s=
s_flags) );
+ PRE_MEM_READ( "sigaltstack(ss)", (Addr)&ss->ss_size, sizeof(ss->ss=
_size) );
}
if (ARG2 !=3D 0) {
PRE_MEM_WRITE( "sigaltstack(oss)", ARG2, sizeof(vki_stack_t) );
|