summaryrefslogtreecommitdiff
path: root/util.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2012-05-14 16:40:28 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2012-05-14 16:40:28 +0200
commit55980f5b72000406e3fd843b098b5c1328a21e45 (patch)
treea50482255fc09c96eb2da46ee56ce0bb455c94eb /util.c
parent24ee60b836ad33bb4ac694ca99d6c94a8cc5ff92 (diff)
downloadstrace-55980f5b72000406e3fd843b098b5c1328a21e45.tar.gz
strace-55980f5b72000406e3fd843b098b5c1328a21e45.tar.bz2
strace-55980f5b72000406e3fd843b098b5c1328a21e45.tar.xz
On clearing "breakpopint", restore syscall number too
This fixes Fedora bug 659382. Low risk: this code is not supposed to be used on any non-acient kernel. * util.c (clearbpt): Restore syscall number too. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'util.c')
-rw-r--r--util.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/util.c b/util.c
index f27acdf..3975f49 100644
--- a/util.c
+++ b/util.c
@@ -1512,9 +1512,9 @@ setbpt(struct tcb *tcp)
|| set_arg0(tcp, &state, new_arg0) < 0
|| arg_finish_change(tcp, &state) < 0)
return -1;
- tcp->flags |= TCB_BPTSET;
tcp->inst[0] = tcp->u_arg[arg0_index];
tcp->inst[1] = tcp->u_arg[arg1_index];
+ tcp->flags |= TCB_BPTSET;
return 0;
}
@@ -1528,6 +1528,7 @@ clearbpt(struct tcb *tcp)
{
arg_setup_state state;
if (arg_setup(tcp, &state) < 0
+ || change_syscall(tcp, tcp->scno) < 0
|| restore_arg0(tcp, &state, tcp->inst[0]) < 0
|| restore_arg1(tcp, &state, tcp->inst[1]) < 0
|| arg_finish_change(tcp, &state))