diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index b750780a9522ca90535d09f256f093fb8b04eb87..c1c5966801683523caeca525c25822b2db154a1a 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -138,7 +138,9 @@ static uint32_t read_uint32(input_stream *inp) {
 static grpc_byte_buffer *read_message(input_stream *inp) {
   gpr_slice slice = gpr_slice_malloc(read_uint22(inp));
   memset(GPR_SLICE_START_PTR(slice), 0, GPR_SLICE_LENGTH(slice));
-  return grpc_raw_byte_buffer_create(&slice, 1);
+  grpc_byte_buffer *out = grpc_raw_byte_buffer_create(&slice, 1);
+  gpr_slice_unref(slice);
+  return out;
 }
 
 static void read_metadata(input_stream *inp, size_t *count,
diff --git a/test/core/util/passthru_endpoint.c b/test/core/util/passthru_endpoint.c
index 156c6660445eb0af8601cf70d3b44c40e644f09e..c7bcd2de7b4954ed259a9b740d602c2ff9b7548d 100644
--- a/test/core/util/passthru_endpoint.c
+++ b/test/core/util/passthru_endpoint.c
@@ -148,6 +148,7 @@ static void half_init(half *m, passthru_endpoint *parent) {
 void grpc_passthru_endpoint_create(grpc_endpoint **client,
                                    grpc_endpoint **server) {
   passthru_endpoint *m = gpr_malloc(sizeof(*m));
+  m->halves = 2;
   half_init(&m->client, m);
   half_init(&m->server, m);
   gpr_mu_init(&m->mu);