[PATCH] Fix bug #10831 - SIGCLD Signal handler not correctly reinstalled on old library code use - smbrun etc.
Martin Schwenke
martin at meltin.net
Tue Sep 23 18:22:40 MDT 2014
On Tue, 23 Sep 2014 15:44:25 -0700, Jeremy Allison <jra at samba.org>
wrote:
> Some of the old library util code can
> overwrite the SIGCHLD signal handler
> carefully set up by smbd and winbindd
> via tevent :-(.
>
> It's used in blocking calls when launching
> scripts as in smbrun(), but it leaves
> the new handler in place when it exits
> from smbrun(), rather than restoring
> the original signal handler.
>
> The first patch changes CatchChild()
> and CatchChildLeaveStatus() to return
> the existing handler so it can be
> saved and restored.
>
> The second patch fixes smbrun() and
> the change password code (which
> also invokes a child process) to
> store and restore the existing
> handler.
>
> Review most appreciated !
Today I learned about:
* signal handling; and
* functions that return function pointers (without using a typedef).
;-)
Just out of interest, since it is only the CatchChildLeaveStatus() calls
that causes problems, why bother changing CatchChild()? I looked over
the various calls to CatchChild() and they seem OK.
I'm happy to say...
Reviewed-by: Martin Schwenke <martin at meltin.net>
However, I won't push in case you decide that CatchChild() doesn't need
to be changed and/or you want to increase confidence by getting a
review from someone who didn't learn about these things today... ;-)
peace & happiness,
martin
More information about the samba-technical
mailing list