From: TCY16 Date: Mon, 26 Sep 2022 09:49:49 +0000 (+0200) Subject: differentiate between malloc and regional_alloc X-Git-Tag: release-1.18.0rc1~36 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f0989fc754bd7841906bbd9e1cb843eefe01ac98;p=thirdparty%2Funbound.git differentiate between malloc and regional_alloc --- diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 92125982f..3a5308c42 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -673,6 +673,9 @@ void reply_info_delete(void* d, void* ATTR_UNUSED(arg)) { struct reply_info* r = (struct reply_info*)d; + if (r->reason_bogus_str_size) { + free(r->reason_bogus_str); + } free(r); } @@ -761,9 +764,14 @@ reply_info_copy(struct reply_info* rep, struct alloc_cache* alloc, if(!cp) return NULL; - if (rep->reason_bogus_str_size > 0 && rep->reason_bogus_str && region) { - cp->reason_bogus_str = (char*)regional_alloc(region, - sizeof(char) * (rep->reason_bogus_str_size + 1)); + if (rep->reason_bogus_str_size > 0 && rep->reason_bogus_str) { + if (region) { + cp->reason_bogus_str = (char*)regional_alloc(region, + sizeof(char) * (rep->reason_bogus_str_size + 1)); + } + else { + cp->reason_bogus_str = malloc(sizeof(char) * (rep->reason_bogus_str_size + 1)); + } if (!(cp->reason_bogus_str)) { if(!region)