tsocket: make sure we delete the fd event before calling close()
authorStefan Metzmacher <metze@samba.org>
Mon, 27 Sep 2010 21:57:34 +0000 (23:57 +0200)
committerStefan Metzmacher <metze@samba.org>
Tue, 28 Sep 2010 01:02:55 +0000 (01:02 +0000)
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.

metze

Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Tue Sep 28 01:02:55 UTC 2010 on sn-devel-104

lib/tsocket/tsocket_bsd.c

index dabf962e87f07c4b3f00e8bd2b56a47b856a0c3e..6fb1535ea0da27e346676cfc630b805697ee8eb3 100644 (file)
@@ -1107,6 +1107,7 @@ static struct tevent_req *tdgram_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);