From 9cf08b6bea66a801506f66193389822d3049c112 Mon Sep 17 00:00:00 2001 From: Robbie Shade Date: Tue, 7 Mar 2017 10:34:17 -0500 Subject: [PATCH] Fix flaky use-after-free in udp_server --- src/core/lib/iomgr/udp_server.c | 6 +++++- third_party/gflags | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/core/lib/iomgr/udp_server.c b/src/core/lib/iomgr/udp_server.c index 2a1c8d39fae..d1bcd89af1f 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 index 30dbc81fb5f..f8a0efe03aa 160000 --- a/third_party/gflags +++ b/third_party/gflags @@ -1 +1 @@ -Subproject commit 30dbc81fb5ffdc98ea9b14b1918bfe4e8779b26e +Subproject commit f8a0efe03aa69b3336d8e228b37d4ccb17324b88