aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/truss/setup.c
diff options
context:
space:
mode:
authorBaptiste Daroussin <bapt@FreeBSD.org>2016-08-02 22:47:06 +0000
committerBaptiste Daroussin <bapt@FreeBSD.org>2016-08-02 22:47:06 +0000
commit0f21f5285b755652faf5f371d455e10da87741f0 (patch)
tree9c0aa86ebd66c224955d9bfb94d8fdc87a49eac1 /usr.bin/truss/setup.c
parent08ed5b80daaae5cfb887b8e960dde7ce0b1eaae2 (diff)
downloadsrc-0f21f5285b755652faf5f371d455e10da87741f0.tar.gz
src-0f21f5285b755652faf5f371d455e10da87741f0.zip
truss: fix uninitialized trussinfo->curthread in add_threads()/enter_syscall
trussinfo->curthread must be initialized before calling enter_syscall(), it is used by t->proc->abi->fetch_args(). Without that truss is segfaulting and the attached program also crash. Submitted by: Nikita Kozlov (nikita@gandi.net) Reviewed by: jhb MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D7399
Notes
Notes: svn path=/head/; revision=303685
Diffstat (limited to 'usr.bin/truss/setup.c')
-rw-r--r--usr.bin/truss/setup.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/usr.bin/truss/setup.c b/usr.bin/truss/setup.c
index c134405907d3..a14c01664ef5 100644
--- a/usr.bin/truss/setup.c
+++ b/usr.bin/truss/setup.c
@@ -223,8 +223,10 @@ add_threads(struct trussinfo *info, struct procinfo *p)
t = new_thread(p, lwps[i]);
if (ptrace(PT_LWPINFO, lwps[i], (caddr_t)&pl, sizeof(pl)) == -1)
err(1, "ptrace(PT_LWPINFO)");
- if (pl.pl_flags & PL_FLAG_SCE)
+ if (pl.pl_flags & PL_FLAG_SCE) {
+ info->curthread = t;
enter_syscall(info, t, &pl);
+ }
}
free(lwps);
}