Skip to content
Snippets Groups Projects
Commit 74221bfe authored by Lubos Slovak's avatar Lubos Slovak
Browse files

lowercase: Empty RDATA check.

parent 7d7ec395
No related branches found
No related tags found
No related merge requests found
......@@ -512,12 +512,14 @@ static int decompress_rdata_dname(const uint8_t **src, size_t *src_avail,
assert(dname_cfg);
UNUSED(dname_type);
int compr_size = knot_dname_wire_check(*src, *src + *src_avail, dname_cfg->pkt_wire);
int compr_size = knot_dname_wire_check(*src, *src + *src_avail,
dname_cfg->pkt_wire);
if (compr_size <= 0) {
return compr_size;
}
int decompr_size = knot_dname_unpack(*dst, *src, *dst_avail, dname_cfg->pkt_wire);
int decompr_size = knot_dname_unpack(*dst, *src, *dst_avail,
dname_cfg->pkt_wire);
if (decompr_size <= 0) {
return decompr_size;
}
......
......@@ -183,28 +183,34 @@ int knot_rrset_rr_to_canonical(knot_rrset_t *rrset)
uint16_t rdlen = knot_rdata_rdlen(rdata);
uint8_t *pos = knot_rdata_data(rdata);
/* No RDATA */
if (rdata == NULL || rdlen == 0) {
return KNOT_EOK;
}
/* Otherwise, whole and not malformed RDATA are expected. */
for (int i = 0; desc->block_types[i] != KNOT_RDATA_WF_END; ++i) {
int type = desc->block_types[i];
switch (type) {
case KNOT_RDATA_WF_COMPRESSIBLE_DNAME:
case KNOT_RDATA_WF_DECOMPRESSIBLE_DNAME:
case KNOT_RDATA_WF_FIXED_DNAME:
ret = knot_dname_to_lower(pos);
if (ret != KNOT_EOK) {
return ret;
int type = desc->block_types[i];
switch (type) {
case KNOT_RDATA_WF_COMPRESSIBLE_DNAME:
case KNOT_RDATA_WF_DECOMPRESSIBLE_DNAME:
case KNOT_RDATA_WF_FIXED_DNAME:
ret = knot_dname_to_lower(pos);
if (ret != KNOT_EOK) {
return ret;
}
pos += knot_dname_size(pos);
break;
case KNOT_RDATA_WF_NAPTR_HEADER:
pos += naptr_header_size(pos, rdata + rdlen);
break;
case KNOT_RDATA_WF_REMAINDER:
break;
default:
/* Fixed size block */
assert(type > 0);
pos += type;
}
pos += knot_dname_size(pos);
break;
case KNOT_RDATA_WF_NAPTR_HEADER:
pos += naptr_header_size(pos, rdata + rdlen);
break;
case KNOT_RDATA_WF_REMAINDER:
break;
default:
/* Fixed size block */
assert(type > 0);
pos += type;
}
}
}
......
......@@ -183,6 +183,9 @@ uint32_t knot_rrset_ttl(const knot_rrset_t *rrset);
*
* \note If RRSet with more RRs is given to this function, only the first RR
* will be converted.
* \warning This function expects either empty RDATA or full, not malformed
* RDATA. I malformed RRSet is passed to this function, memory errors
* may occur.
*
* \param rrset RR to convert.
*/
......
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