diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2012-05-14 16:40:28 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2012-05-14 16:40:28 +0200 |
commit | 55980f5b72000406e3fd843b098b5c1328a21e45 (patch) | |
tree | a50482255fc09c96eb2da46ee56ce0bb455c94eb /util.c | |
parent | 24ee60b836ad33bb4ac694ca99d6c94a8cc5ff92 (diff) | |
download | strace-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.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -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)) |