diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2010-07-26 13:58:48 +0930 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2010-08-18 11:40:17 +0930 |
commit | 1a009aff73cd3fa0e9653c35581283bd4de614e3 (patch) | |
tree | 9632a9f5ea6e7c724b464c9db7c20809aa77967c /ctdb/lib/util/debug.c | |
parent | 6ce1501aa1f611fe9b6739ec446e10225b4e5d49 (diff) | |
download | samba-1a009aff73cd3fa0e9653c35581283bd4de614e3.tar.gz samba-1a009aff73cd3fa0e9653c35581283bd4de614e3.tar.xz samba-1a009aff73cd3fa0e9653c35581283bd4de614e3.zip |
takeover: prevent crash by avoiding free in traverse on RST timeout
After 5 attempts to send a RST to a client without any response, we free
"con"; this is done during a traverse. This frees the node we are walking
through (the node is made a child of "con" down in rb_tree.c's
trbt_create_node() (Valgrind would catch this, as Martin confirmed).
So, we create a temporary parent and reparent onto that; then we free
that parent after the traverse, thus deleting the unwanted nodes.
CQ:S1019041
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(This used to be ctdb commit 08f7f85477610a4916c1ec866aa467b28f1bbec3)
Diffstat (limited to 'ctdb/lib/util/debug.c')
0 files changed, 0 insertions, 0 deletions