From: Wouter Wijngaards Date: Tue, 30 Jan 2018 14:26:19 +0000 (+0000) Subject: Fix sldns parse state prev dname. X-Git-Tag: release-1.7.0rc1~93 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7d5dc75dc5eec7c90d3b09761dde1ff8896226ea;p=thirdparty%2Funbound.git Fix sldns parse state prev dname. git-svn-id: file:///svn/unbound/trunk@4468 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 6759944e4..c8a1def75 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -906,7 +906,7 @@ int sldns_fp2wire_rr_buf(FILE* in, uint8_t* rr, size_t* len, size_t* dname_len, *dname_len = 0; return LDNS_WIREPARSE_ERR_INCLUDE; } else { - return sldns_str2wire_rr_buf(line, rr, len, dname_len, + int r = sldns_str2wire_rr_buf(line, rr, len, dname_len, parse_state?parse_state->default_ttl:0, (parse_state&&parse_state->origin_len)? parse_state->origin:NULL, @@ -914,6 +914,13 @@ int sldns_fp2wire_rr_buf(FILE* in, uint8_t* rr, size_t* len, size_t* dname_len, (parse_state&&parse_state->prev_rr_len)? parse_state->prev_rr:NULL, parse_state?parse_state->prev_rr_len:0); + if(r == LDNS_WIREPARSE_ERR_OK && (*dname_len) != 0 && + parse_state && + (*dname_len) <= sizeof(parse_state->prev_rr)) { + memmove(parse_state->prev_rr, rr, *dname_len); + parse_state->prev_rr_len = (*dname_len); + } + return r; } return LDNS_WIREPARSE_ERR_OK; }