In ctdb_control_end_recovery,
authorRonnie Sahlberg <ronniesahlberg@gmail.com>
Tue, 23 Feb 2010 01:43:49 +0000 (12:43 +1100)
committerRonnie Sahlberg <ronniesahlberg@gmail.com>
Tue, 23 Feb 2010 01:43:49 +0000 (12:43 +1100)
commit9cb1a3393efc479494de11839cfd3b080b7c8914
tree73e12bb393de720ffc69f611c0a44764e81fb849
parent4e31db4bc21a84e6003258b924d73782030c53ed
In ctdb_control_end_recovery,

We used to talloc_steal c (the command packet) and make it a child of the
"event script state context".
If we failed to create a eventscript child context for some reason,
this would have talloc freed state, but at the same time it would also
implicitely have freed c.
Once ctdb_control_end_recovery() returns the error back to the caller,
the caller would dereference both c, and also outdata which is a child of c
and we would either read garbage data or segv.

Change the ordering so we only talloc_steal c as a child of state IFF
we have successfully created a child context for the script.

BZ61068
server/ctdb_recover.c