]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Check members of the stack_t structure passed to sigaltstack
authorTom Hughes <tom@compton.nu>
Mon, 18 Jul 2005 23:18:10 +0000 (23:18 +0000)
committerTom Hughes <tom@compton.nu>
Mon, 18 Jul 2005 23:18:10 +0000 (23:18 +0000)
individually to avoid problems with padding on 64 bit platforms.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4168

coregrind/m_syswrap/syswrap-generic.c

index d3b02d4b18b477ddda385acc5d0e40aa68be0ddb..c86691dee8b5b821140414cde3648368c8f2e3c2 100644 (file)
@@ -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) );