summaryrefslogtreecommitdiffstats
path: root/lib/tsocket
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2010-09-27 23:57:34 +0200
committerStefan Metzmacher <metze@samba.org>2010-10-04 14:05:15 +0000
commit4423aa59abda50c8b71815f922ea03e2009f9e50 (patch)
tree69df874c2c0d110cc30f8e7873f3d8d336f7b7e9 /lib/tsocket
parentc676c950dbb022004e7224b39355decfa74e6032 (diff)
downloadsamba-4423aa59abda50c8b71815f922ea03e2009f9e50.tar.gz
samba-4423aa59abda50c8b71815f922ea03e2009f9e50.tar.xz
samba-4423aa59abda50c8b71815f922ea03e2009f9e50.zip
tsocket: make sure we delete the fd event before calling close()
We got random double free errors, when getting events from epoll_wait() and try to dereference the private talloc pointer attached to it. Before doing the close() in the tstream_disconnect_send() function we need to delete the fd event. commit 38f505530ba06323a56c7d3914630efffcd12629 only fixed it for tdgram sockets. metze
Diffstat (limited to 'lib/tsocket')
-rw-r--r--lib/tsocket/tsocket_bsd.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/tsocket/tsocket_bsd.c b/lib/tsocket/tsocket_bsd.c
index 6fb1535ea0..bc7cfe3fe9 100644
--- a/lib/tsocket/tsocket_bsd.c
+++ b/lib/tsocket/tsocket_bsd.c
@@ -1895,6 +1895,7 @@ static struct tevent_req *tstream_bsd_disconnect_send(TALLOC_CTX *mem_ctx,
goto post;
}
+ TALLOC_FREE(bsds->fde);
ret = close(bsds->fd);
bsds->fd = -1;
err = tsocket_bsd_error_from_errno(ret, errno, &dummy);