From: Boris VANHOOF Date: Tue, 23 May 2023 07:23:03 +0000 (+0200) Subject: free memory in error case X-Git-Tag: release-1.18.0rc1~24^2~2^2~2^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a21bc231393ea8266ba0ea069ec460f033905ad4;p=thirdparty%2Funbound.git free memory in error case --- 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; } }