diff options
author | Craig Tiller <ctiller@google.com> | 2015-10-05 11:33:36 -0700 |
---|---|---|
committer | Craig Tiller <ctiller@google.com> | 2015-10-05 11:33:36 -0700 |
commit | bae235cd5fdfd10f63308e70eff8e689449e040b (patch) | |
tree | f49ca5b185e624f5574e8c45e075dd97588ad7a3 /src | |
parent | 91054e685594dcc0ab01b2353cb7f6a4acd0bb05 (diff) |
Fix use-after-free
Diffstat (limited to 'src')
-rw-r--r-- | src/core/iomgr/pollset_posix.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/core/iomgr/pollset_posix.c b/src/core/iomgr/pollset_posix.c index 9042827484..b663780a02 100644 --- a/src/core/iomgr/pollset_posix.c +++ b/src/core/iomgr/pollset_posix.c @@ -477,6 +477,7 @@ static void basic_pollset_maybe_work_and_unlock(grpc_exec_ctx *exec_ctx, if (fd) { pfd[2].fd = fd->fd; pfd[2].revents = 0; + GRPC_FD_REF(fd, "basicpoll_begin"); gpr_mu_unlock(&pollset->mu); pfd[2].events = (short)grpc_fd_begin_poll(fd, pollset, POLLIN, POLLOUT, &fd_watcher); @@ -523,6 +524,10 @@ static void basic_pollset_maybe_work_and_unlock(grpc_exec_ctx *exec_ctx, } } } + + if (fd) { + GRPC_FD_UNREF(fd, "basicpoll_begin"); + } } static void basic_pollset_destroy(grpc_pollset *pollset) { |