aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Robbie Shade <rjshade@google.com>2017-03-07 10:34:17 -0500
committerGravatar Robbie Shade <rjshade@google.com>2017-03-07 13:53:24 -0500
commit9cf08b6bea66a801506f66193389822d3049c112 (patch)
tree09fb1bbb28bf1bd45b359e80bad627e7fcc66ebc
parentefe7572c72343cdaa865c1e86d29e98ed13b704b (diff)
Fix flaky use-after-free in udp_server
-rw-r--r--src/core/lib/iomgr/udp_server.c6
m---------third_party/gflags0
2 files changed, 5 insertions, 1 deletions
diff --git a/src/core/lib/iomgr/udp_server.c b/src/core/lib/iomgr/udp_server.c
index 2a1c8d39fa..d1bcd89af1 100644
--- a/src/core/lib/iomgr/udp_server.c
+++ b/src/core/lib/iomgr/udp_server.c
@@ -485,7 +485,11 @@ void grpc_udp_server_start(grpc_exec_ctx *exec_ctx, grpc_udp_server *s,
grpc_schedule_on_exec_ctx);
grpc_fd_notify_on_write(exec_ctx, sp->emfd, &sp->write_closure);
- s->active_ports++;
+ /* Registered for both read and write callbacks: increment active_ports
+ * twice to account for this, and delay free-ing of memory until both
+ * on_read and on_write have fired. */
+ s->active_ports += 2;
+
sp = sp->next;
}
diff --git a/third_party/gflags b/third_party/gflags
-Subproject 30dbc81fb5ffdc98ea9b14b1918bfe4e8779b26
+Subproject f8a0efe03aa69b3336d8e228b37d4ccb17324b8