rdata_raw for unknown rr types

This commit is contained in:
Willem Toorop 2015-03-06 16:12:51 +01:00
parent fe10123323
commit d72151ed51
2 changed files with 9 additions and 9 deletions

View File

@ -263,6 +263,7 @@ priv_getdns_rdf_iter_init(priv_getdns_rdf_iter *i, priv_getdns_rr_iter *rr)
assert(i);
assert(rr);
i->end = NULL;
/* rr_iter already done or in question section */
if (!rr->pos || rr->n < GLDNS_QDCOUNT(rr->pkt))
goto done;
@ -273,10 +274,6 @@ priv_getdns_rdf_iter_init(priv_getdns_rdf_iter *i, priv_getdns_rr_iter *rr)
i->rdd_pos = rr_def->rdata;
i->rdd_end = rr_def->rdata + rr_def->n_rdata_fields;
/* No rdata */
if (i->rdd_pos == i->rdd_end)
goto done;
/* No space to read rdata len */
if (rr->rr_type + 10 >= rr->nxt)
goto done;
@ -285,7 +282,9 @@ priv_getdns_rdf_iter_init(priv_getdns_rdf_iter *i, priv_getdns_rr_iter *rr)
i->pos = rr->rr_type + 10;
i->end = rr->nxt;
return rdf_iter_find_nxt(i);
/* rdata */
if (i->rdd_pos != i->rdd_end)
return rdf_iter_find_nxt(i);
done:
i->pos = NULL;
return NULL;

View File

@ -335,13 +335,14 @@ priv_getdns_rr_iter2rr_dict(getdns_context *context, priv_getdns_rr_iter *i)
if (!(rdata_dict = getdns_dict_create_with_context(context)))
goto error;
if ((rdf = priv_getdns_rdf_iter_init(&rdf_storage, i))) {
bindata.size = rdf->end - rdf->pos;
bindata.data = rdf->pos;
if (i->rr_type + 10 <= i->nxt) {
bindata.size = i->nxt - (i->rr_type + 10);
bindata.data = i->rr_type + 10;
if (getdns_dict_set_bindata(rdata_dict, "rdata_raw", &bindata))
goto rdata_error;
}
for (; rdf; rdf = priv_getdns_rdf_iter_next(rdf)) {
for ( rdf = priv_getdns_rdf_iter_init(&rdf_storage, i)
; rdf; rdf = priv_getdns_rdf_iter_next(rdf)) {
if (rdf->rdd_pos->type & GETDNS_RDF_INTEGER) {
val_type = t_int;
switch (rdf->rdd_pos->type & GETDNS_RDF_FIXEDSZ) {