diff --git a/src/core/client_config/resolvers/zookeeper_resolver.c b/src/core/client_config/resolvers/zookeeper_resolver.c
index a95e866abc7dacd529b5c1cba978ed2abf18aa6c..658784d3ea435ee634c0d06494a5bcea6196518b 100644
--- a/src/core/client_config/resolvers/zookeeper_resolver.c
+++ b/src/core/client_config/resolvers/zookeeper_resolver.c
@@ -266,11 +266,7 @@ static char *zookeeper_parse_address(char *buffer, int buffer_len) {
       }
     }
     if (host != NULL && port != NULL) {
-      address = gpr_malloc(GRPC_MAX_SOCKADDR_SIZE);
-      memset(address, 0, GRPC_MAX_SOCKADDR_SIZE);
-      strcat(address, host);
-      strcat(address, ":");
-      strcat(address, port);
+      gpr_asprintf(&address, "%s:%s", host, port);
     }
     grpc_json_destroy(json);
   }
@@ -314,7 +310,6 @@ static void zookeeper_get_children_node_completion(int rc, const char *value,
 static void zookeeper_get_children_completion(
     int rc, const struct String_vector *children, const void *arg) {
   char *path;
-  int path_length;
   int status;
   int i;
   zookeeper_resolver *r = (zookeeper_resolver *)arg;
@@ -335,12 +330,7 @@ static void zookeeper_get_children_completion(
   r->resolved_total = children->count;
 
   for (i = 0; i < children->count; i++) {
-    path_length = strlen(r->name) + strlen(children->data[i]) + 2;
-    path = (char *)gpr_malloc(path_length);
-    memset(path, 0, path_length);
-    strcat(path, r->name);
-    strcat(path, "/");
-    strcat(path, children->data[i]);
+    gpr_asprintf(&path, "%s/%s", r->name, children->data[i]);
     status = zoo_awget(r->zookeeper_handle, path, zookeeper_watcher, r,
                        zookeeper_get_children_node_completion, r);
     gpr_free(path);
diff --git a/test/cpp/end2end/zookeeper_test.cc b/test/cpp/end2end/zookeeper_test.cc
index 2d53b29eb592897ac8c891586b8cceb5e72f9778..079529a12f33761ddfa3d4f92b41defa5b94f1e3 100644
--- a/test/cpp/end2end/zookeeper_test.cc
+++ b/test/cpp/end2end/zookeeper_test.cc
@@ -74,7 +74,7 @@ class ZookeeperTest : public ::testing::Test {
     server_address_ = "localhost:" + std::to_string(port);
 
     // Setup zookeeper
-    // Require zookeeper server running in Jenkins master
+    // Require zookeeper server running in grpc-jenkins-master
     const char* zookeeper_address = "grpc-jenkins-master:2181";
     ZookeeperSetUp(zookeeper_address, port);
 
@@ -167,6 +167,7 @@ TEST_F(ZookeeperTest, ZookeeperStateChangeTwoRpc) {
   EchoRequest request1;
   EchoResponse response1;
   ClientContext context1;
+  context1.set_authority("test");
   request1.set_message("Hello");
   Status s1 = stub_->Echo(&context1, request1, &response1);
   EXPECT_EQ(response1.message(), request1.message());
@@ -180,6 +181,7 @@ TEST_F(ZookeeperTest, ZookeeperStateChangeTwoRpc) {
   EchoRequest request2;
   EchoResponse response2;
   ClientContext context2;
+  context2.set_authority("test");
   request2.set_message("Hello");
   Status s2 = stub_->Echo(&context2, request2, &response2);
   EXPECT_EQ(response2.message(), request2.message());