diff --git a/src/zcompile/zcompile.c b/src/zcompile/zcompile.c index 40ba583a1fe98bf84e3975cb8aba94b556390c5d..7b20a6b8fdd9be68cd4807700d8dd538cfa0a01d 100644 --- a/src/zcompile/zcompile.c +++ b/src/zcompile/zcompile.c @@ -275,9 +275,14 @@ static int add_rdata_to_rr(knot_rrset_t *rrset, const scanner_t *scanner) dbg_zp_detail("zp: add_rdata_to_rr: Adding type %d, RRSet has %d RRs.\n", rrset->type, rrset->rdata_count); - uint8_t *rdata = malloc(calculate_item_size(rrset, scanner)); - assert(rdata); + size_t rdlen = calculate_item_size(rrset, scanner); size_t offset = 0; + uint8_t *rdata = knot_rrset_create_rdata(rrset, rdlen); + if (rdata == NULL) { + dbg_zp("zp: create_rdata: Could not create RR. Reason: %s.\n", + knot_strerror(ret)); + return KNOT_ENOMEM; + } for (int i = 0; desc->block_types[i] != KNOT_RDATA_WF_END; i++) { int item = desc->block_types[i]; @@ -326,16 +331,6 @@ dbg_zp_exec_detail( } } - int ret = knot_rrset_add_rdata(rrset, rdata, offset); - if (ret != KNOT_EOK) { - dbg_zp("zp: add_rdat_to_rr: Could not add RR. Reason: %s.\n", - knot_strerror(ret)); - return ret; - } - - /* RDATA are safely added to RRSet now. */ - free(rdata); - return KNOT_EOK; }