Skip to content
Snippets Groups Projects
Commit 74dccd0d authored by Marek Vavrusa's avatar Marek Vavrusa
Browse files

Fixed some leaks in TSIG code.

refs #1543
parent 55719a5f
No related branches found
No related tags found
No related merge requests found
......@@ -59,7 +59,7 @@ static int knot_tsig_check_key(const knot_rrset_t *tsig_rr,
return KNOT_EMALF;
}
const char *name = knot_dname_to_str(tsig_name);
char *name = knot_dname_to_str(tsig_name);
if (!name) {
return KNOT_EMALF;
}
......@@ -67,9 +67,11 @@ static int knot_tsig_check_key(const knot_rrset_t *tsig_rr,
if (knot_dname_compare(tsig_name, tsig_key->name) != 0) {
/*!< \todo which error. */
dbg_tsig("TSIG: unknown key: %s\n", name);
free(name);
return KNOT_TSIG_EBADKEY;
}
free(name);
return KNOT_EOK;
}
......@@ -480,6 +482,8 @@ int knot_tsig_sign(uint8_t *msg, size_t *msg_len,
knot_rrset_t *tmp_tsig =
knot_rrset_new(key_name_copy,
KNOT_RRTYPE_TSIG, KNOT_CLASS_ANY, 0);
/* Should be retained by rrsig or freed, release. */
knot_dname_release(key_name_copy);
if (!tmp_tsig) {
dbg_tsig_detail("TSIG: tmp_tsig = NULL\n");
return KNOT_ENOMEM;
......@@ -489,7 +493,7 @@ int knot_tsig_sign(uint8_t *msg, size_t *msg_len,
knot_rdata_t *rdata = knot_rdata_new();
if (!rdata) {
dbg_tsig_detail("TSIG: rdata = NULL\n");
/*! \todo CLEANUP !!! */
knot_rrset_free(&tmp_tsig);
return KNOT_ENOMEM;
}
......@@ -505,7 +509,8 @@ int knot_tsig_sign(uint8_t *msg, size_t *msg_len,
if (!items) {
dbg_tsig_detail("TSIG: items = NULL\n");
ERR_ALLOC_FAILED;
/*! \todo Free key_name_copy !!! */
knot_rrset_free(&tmp_tsig);
knot_rdata_free(&rdata);
return KNOT_ENOMEM;
}
......@@ -514,7 +519,8 @@ int knot_tsig_sign(uint8_t *msg, size_t *msg_len,
int ret = knot_rdata_set_items(rdata, items, desc->length);
if (ret != KNOT_EOK) {
dbg_tsig_detail("TSIG: rdata_set_items returned %s\n", knot_strerror(ret));
/*! \todo CLEANUP !!! */
knot_rrset_free(&tmp_tsig);
knot_rdata_free(&rdata);
return ret;
}
free(items);
......@@ -594,8 +600,6 @@ int knot_tsig_sign(uint8_t *msg, size_t *msg_len,
memcpy(digest, digest_tmp, digest_tmp_len);
*digest_len = digest_tmp_len;
/*! \todo CLEANUP !!! */
return KNOT_EOK;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment