diff options
author | Stefan Metzmacher <metze@samba.org> | 2010-04-06 11:53:33 +0200 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2010-05-06 14:08:35 +0200 |
commit | 5069a5792e56bb845b4bcacae7c68075a72cdf57 (patch) | |
tree | a921edcc914b38c8c97ceb76ac62d70b63a20496 | |
parent | 07b4b577d49afcac9794187588e32189429e04ed (diff) | |
download | samba-5069a5792e56bb845b4bcacae7c68075a72cdf57.tar.gz |
s3: fix crash in winbindd (similar to commit f8cc0e88fbbb082ead023e0cb437b1e12cf35459)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(cherry picked from commit be9a46c9cae2d05a7eb54e871e05480bd8caa609)
-rw-r--r-- | source3/libsmb/async_smb.c | 11 | ||||
-rw-r--r-- | source3/rpc_client/rpc_transport_np.c | 6 |
2 files changed, 15 insertions, 2 deletions
diff --git a/source3/libsmb/async_smb.c b/source3/libsmb/async_smb.c index 07d832e1b24..e683e375d9a 100644 --- a/source3/libsmb/async_smb.c +++ b/source3/libsmb/async_smb.c @@ -1010,6 +1010,11 @@ static void cli_state_handler(struct event_context *event_ctx, DEBUG(11, ("cli_state_handler called with flags %d\n", flags)); + if (cli->fd == -1) { + status = NT_STATUS_CONNECTION_INVALID; + goto sock_error; + } + if (flags & EVENT_FD_WRITE) { size_t to_send; ssize_t sent; @@ -1123,6 +1128,8 @@ static void cli_state_handler(struct event_context *event_ctx, } } TALLOC_FREE(cli->fd_event); - close(cli->fd); - cli->fd = -1; + if (cli->fd != -1) { + close(cli->fd); + cli->fd = -1; + } } diff --git a/source3/rpc_client/rpc_transport_np.c b/source3/rpc_client/rpc_transport_np.c index 4ea361bc2a8..fe3303095d7 100644 --- a/source3/rpc_client/rpc_transport_np.c +++ b/source3/rpc_client/rpc_transport_np.c @@ -31,6 +31,12 @@ struct rpc_transport_np_state { static int rpc_transport_np_state_destructor(struct rpc_transport_np_state *s) { bool ret; + + if (s->cli->fd == -1) { + DEBUG(10, ("socket was closed, no need to send close request.\n")); + return 0; + } + ret = cli_close(s->cli, s->fnum); if (!ret) { DEBUG(1, ("rpc_transport_np_state_destructor: cli_close " |