mirror of https://github.com/getdnsapi/getdns.git
rdata_raw for unknown rr types
This commit is contained in:
parent
fe10123323
commit
d72151ed51
|
@ -263,6 +263,7 @@ priv_getdns_rdf_iter_init(priv_getdns_rdf_iter *i, priv_getdns_rr_iter *rr)
|
||||||
assert(i);
|
assert(i);
|
||||||
assert(rr);
|
assert(rr);
|
||||||
|
|
||||||
|
i->end = NULL;
|
||||||
/* rr_iter already done or in question section */
|
/* rr_iter already done or in question section */
|
||||||
if (!rr->pos || rr->n < GLDNS_QDCOUNT(rr->pkt))
|
if (!rr->pos || rr->n < GLDNS_QDCOUNT(rr->pkt))
|
||||||
goto done;
|
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_pos = rr_def->rdata;
|
||||||
i->rdd_end = rr_def->rdata + rr_def->n_rdata_fields;
|
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 */
|
/* No space to read rdata len */
|
||||||
if (rr->rr_type + 10 >= rr->nxt)
|
if (rr->rr_type + 10 >= rr->nxt)
|
||||||
goto done;
|
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->pos = rr->rr_type + 10;
|
||||||
i->end = rr->nxt;
|
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:
|
done:
|
||||||
i->pos = NULL;
|
i->pos = NULL;
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -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)))
|
if (!(rdata_dict = getdns_dict_create_with_context(context)))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if ((rdf = priv_getdns_rdf_iter_init(&rdf_storage, i))) {
|
if (i->rr_type + 10 <= i->nxt) {
|
||||||
bindata.size = rdf->end - rdf->pos;
|
bindata.size = i->nxt - (i->rr_type + 10);
|
||||||
bindata.data = rdf->pos;
|
bindata.data = i->rr_type + 10;
|
||||||
if (getdns_dict_set_bindata(rdata_dict, "rdata_raw", &bindata))
|
if (getdns_dict_set_bindata(rdata_dict, "rdata_raw", &bindata))
|
||||||
goto rdata_error;
|
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) {
|
if (rdf->rdd_pos->type & GETDNS_RDF_INTEGER) {
|
||||||
val_type = t_int;
|
val_type = t_int;
|
||||||
switch (rdf->rdd_pos->type & GETDNS_RDF_FIXEDSZ) {
|
switch (rdf->rdd_pos->type & GETDNS_RDF_FIXEDSZ) {
|
||||||
|
|
Loading…
Reference in New Issue