]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
dns: use nom's rest to take all remaining rdata
authorSimon Dugas <simdugas@gmail.com>
Fri, 24 Apr 2020 18:03:23 +0000 (18:03 +0000)
committerVictor Julien <victor@inliniac.net>
Fri, 4 Sep 2020 11:05:08 +0000 (13:05 +0200)
Using nom's `rest` combinator eliminates the need to call the do_parse
macro for parsing a single element.

rust/src/dns/parser.rs

index ec900ab0cd2925e6083cb72b6b09982fb4021953..8fea18457e580a6371c4fee32619d7d00c3db993 100644 (file)
@@ -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)