From a21bc231393ea8266ba0ea069ec460f033905ad4 Mon Sep 17 00:00:00 2001 From: Boris VANHOOF Date: Tue, 23 May 2023 09:23:03 +0200 Subject: [PATCH] free memory in error case --- services/mesh.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/mesh.c b/services/mesh.c index d7323bf58..f9a44fd5e 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -456,13 +456,14 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, s->s.edns_opts_front_in = edns_opt_copy_region(edns->opt_list_in, s->s.region); if(!s->s.edns_opts_front_in) { - log_err("mesh_state_create: out of memory; SERVFAIL"); + log_err("edns_opt_copy_region: out of memory; SERVFAIL"); if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, NULL, NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, mesh->env->now_tv)) edns->opt_list_inplace_cb_out = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, qinfo, qid, qflags, edns); comm_point_send_reply(rep); + mesh_state_delete(&s->s); return; } } @@ -575,6 +576,7 @@ mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, s->s.edns_opts_front_in = edns_opt_copy_region(edns->opt_list_in, s->s.region); if(!s->s.edns_opts_front_in) { + mesh_state_delete(&s->s); return 0; } } -- 2.47.3