rust/dns: convert to nom 8.0

Ticket: #8024
pull/14187/head
Jason Ish 2 weeks ago committed by Victor Julien
parent 16c42da57e
commit 54cc97b78e

@ -29,8 +29,8 @@ use crate::dns::parser;
use crate::flow::Flow; use crate::flow::Flow;
use crate::frames::Frame; use crate::frames::Frame;
use nom7::number::streaming::be_u16; use nom8::number::streaming::be_u16;
use nom7::{Err, IResult}; use nom8::{Err, IResult};
use suricata_sys::sys::{ use suricata_sys::sys::{
AppLayerParserState, AppProto, DetectEngineThreadCtx, SCAppLayerParserConfParserEnabled, AppLayerParserState, AppProto, DetectEngineThreadCtx, SCAppLayerParserConfParserEnabled,
SCAppLayerProtoDetectConfProtoDetectionEnabled, SCAppLayerProtoDetectConfProtoDetectionEnabled,

@ -19,11 +19,11 @@
use crate::detect::EnumString; use crate::detect::EnumString;
use crate::dns::dns::*; use crate::dns::dns::*;
use nom7::combinator::rest; use nom8::combinator::rest;
use nom7::error::ErrorKind; use nom8::error::ErrorKind;
use nom7::multi::{count, length_data}; use nom8::multi::{count, length_data};
use nom7::number::streaming::{be_u16, be_u32, be_u8}; use nom8::number::streaming::{be_u16, be_u32, be_u8};
use nom7::{error_position, Err, IResult}; use nom8::{error_position, Err, IResult, Parser};
// Set a maximum assembled hostname length of 1025, this value was // Set a maximum assembled hostname length of 1025, this value was
// chosen as its what DNSMasq uses, a popular DNS server, even if most // chosen as its what DNSMasq uses, a popular DNS server, even if most
@ -81,7 +81,7 @@ fn dns_parse_name<'b>(
pos = &pos[1..]; pos = &pos[1..];
break; break;
} else if len & 0b1100_0000 == 0 { } else if len & 0b1100_0000 == 0 {
let (rem, label) = length_data(be_u8)(pos)?; let (rem, label) = length_data(be_u8).parse(pos)?;
if !flags.contains(DNSNameFlags::TRUNCATED) { if !flags.contains(DNSNameFlags::TRUNCATED) {
if !name.is_empty() { if !name.is_empty() {
name.push(b'.'); name.push(b'.');
@ -192,7 +192,7 @@ fn dns_parse_answer<'a>(
let (i, rrtype) = be_u16(i)?; let (i, rrtype) = be_u16(i)?;
let (i, rrclass) = be_u16(i)?; let (i, rrclass) = be_u16(i)?;
let (i, ttl) = be_u32(i)?; let (i, ttl) = be_u32(i)?;
let (i, data) = length_data(be_u16)(i)?; let (i, data) = length_data(be_u16).parse(i)?;
let answer = Answer { let answer = Answer {
name, name,
rrtype, rrtype,
@ -345,7 +345,7 @@ fn dns_parse_rdata_txt(input: &[u8]) -> IResult<&[u8], DNSRData> {
let mut i = input; let mut i = input;
while !i.is_empty() { while !i.is_empty() {
let (j, txt) = length_data(be_u8)(i)?; let (j, txt) = length_data(be_u8).parse(i)?;
txt_strings.push(txt.to_vec()); txt_strings.push(txt.to_vec());
i = j; i = j;
} }
@ -378,7 +378,7 @@ fn dns_parse_rdata_opt(input: &[u8]) -> IResult<&[u8], DNSRData> {
while !i.is_empty() { while !i.is_empty() {
let (j, code) = be_u16(i)?; let (j, code) = be_u16(i)?;
let (j, data) = length_data(be_u16)(j)?; let (j, data) = length_data(be_u16).parse(j)?;
i = j; i = j;
dns_rdata_opt_vec.push(DNSRDataOPT { dns_rdata_opt_vec.push(DNSRDataOPT {
code, code,
@ -440,7 +440,7 @@ pub fn dns_parse_body<'a>(
let (i, queries) = count( let (i, queries) = count(
|b| dns_parse_query(b, message, &mut flags), |b| dns_parse_query(b, message, &mut flags),
header.questions as usize, header.questions as usize,
)(i)?; ).parse(i)?;
let (i, answers) = dns_parse_answer(i, message, header.answer_rr as usize, &mut flags)?; let (i, answers) = dns_parse_answer(i, message, header.answer_rr as usize, &mut flags)?;
let mut invalid_authorities = false; let mut invalid_authorities = false;

Loading…
Cancel
Save