ctdb-daemon: Handle failure immediately, do housekeeping later
authorMartin Schwenke <martin@meltin.net>
Fri, 26 Aug 2016 06:38:56 +0000 (16:38 +1000)
committerKarolin Seeger <kseeger@samba.org>
Tue, 13 Sep 2016 10:27:29 +0000 (12:27 +0200)
commitf91cc13ab7a9a4115604260167c404ea262f685f
tree2e0e54727ee2c32c3034be530ccab23e7fb10de8
parented7a8f45039d2998b0e18522f3ec34e160c2a65b
ctdb-daemon: Handle failure immediately, do housekeeping later

The callback should never be called before an immediate return.  The
callback might reply to a control and the caller of
ctdb_event_script_callback_v() may not have assigned/stolen the
pointer to control structure into the private data.  Therefore,
calling the callback can dereference an uninitialised pointer to the
control structure when attempting to reply.

An event script isn't being run until the child has been forked.  So
update relevant state and set the destructor after this.

If the child can't be forked then free the state and return with an
error.  The callback will not be called and the caller will process
the error correctly.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=12180

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
(cherry picked from commit 582518c7e89b279e34147bdb0b04b73056fac048)
ctdb/server/eventscript.c