From: Simon Dugas Date: Fri, 24 Apr 2020 18:03:23 +0000 (+0000) Subject: dns: use nom's rest to take all remaining rdata X-Git-Tag: suricata-6.0.0-rc1~69 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=af498fd8404dab2e88f8aeb2c4748db7f445aba5;p=thirdparty%2Fsuricata.git dns: use nom's rest to take all remaining rdata Using nom's `rest` combinator eliminates the need to call the do_parse macro for parsing a single element. --- diff --git a/rust/src/dns/parser.rs b/rust/src/dns/parser.rs index ec900ab0cd..8fea18457e 100644 --- a/rust/src/dns/parser.rs +++ b/rust/src/dns/parser.rs @@ -259,19 +259,11 @@ pub fn dns_parse_query<'a>(input: &'a [u8], } fn dns_parse_rdata_a<'a>(input: &'a [u8]) -> IResult<&'a [u8], DNSRData> { - do_parse!( - input, - data: take!(input.len()) >> - (DNSRData::A(data.to_vec())) - ) + rest(input).map(|(input, data)| (input, DNSRData::A(data.to_vec()))) } fn dns_parse_rdata_aaaa<'a>(input: &'a [u8]) -> IResult<&'a [u8], DNSRData> { - do_parse!( - input, - data: take!(input.len()) >> - (DNSRData::AAAA(data.to_vec())) - ) + rest(input).map(|(input, data)| (input, DNSRData::AAAA(data.to_vec()))) } fn dns_parse_rdata_cname<'a>(input: &'a [u8], message: &'a [u8]) @@ -331,11 +323,7 @@ fn dns_parse_rdata_sshfp<'a>(input: &'a [u8]) fn dns_parse_rdata_unknown<'a>(input: &'a [u8]) -> IResult<&'a [u8], DNSRData> { - do_parse!( - input, - data: take!(input.len()) >> - (DNSRData::Unknown(data.to_vec())) - ) + rest(input).map(|(input, data)| (input, DNSRData::Unknown(data.to_vec()))) } pub fn dns_parse_rdata<'a>(input: &'a [u8], message: &'a [u8], rrtype: u16)