pop3: convert to nom 8

Ticket: #8127.
pull/14377/head
Victor Julien 10 months ago
parent da2db65f62
commit 2973eded56

@ -129,34 +129,37 @@ impl State<POP3Transaction> for POP3State {
} }
} }
use nom7::{ use nom8::{
bytes::complete::{take_while, take_while_m_n},
bytes::streaming::{tag, take_until}, bytes::streaming::{tag, take_until},
IResult, combinator::map_res,
{AsChar, IResult, Parser},
}; };
fn parse_unknown_message(input: &[u8]) -> IResult<&[u8], &[u8]> { fn parse_unknown_message(input: &[u8]) -> IResult<&[u8], &[u8]> {
let (input, value) = take_until("\r\n")(input)?; let (input, value) = take_until("\r\n").parse(input)?;
let (input, _) = tag("\r\n")(input)?; let (input, _) = tag("\r\n")(input)?;
return Ok((input, value)); return Ok((input, value));
} }
fn find_end_of_header(input: &[u8]) -> IResult<&[u8], &[u8]> { fn find_end_of_header(input: &[u8]) -> IResult<&[u8], &[u8]> {
let (input, value) = take_until("\r\n")(input)?; let (input, value) = take_until("\r\n").parse(input)?;
let (input, _) = tag("\r\n")(input)?; let (input, _) = tag("\r\n").parse(input)?;
return Ok((input, value)); return Ok((input, value));
} }
fn find_end_of_message(input: &[u8]) -> IResult<&[u8], &[u8]> { fn find_end_of_message(input: &[u8]) -> IResult<&[u8], &[u8]> {
let (input, value) = take_until(".\r\n")(input)?; let (input, value) = take_until(".\r\n").parse(input)?;
let (input, _) = tag(".\r\n")(input)?; let (input, _) = tag(".\r\n").parse(input)?;
return Ok((input, value)); return Ok((input, value));
} }
fn parse_response_header_with_octets(input: &[u8]) -> IResult<&[u8], u32> { fn parse_response_header_with_octets(input: &[u8]) -> IResult<&[u8], u32> {
let (input, size) = nom7::combinator::map_res( let (input, size) = map_res(
nom7::bytes::complete::take_while_m_n(1, 10, |b: u8| b.is_ascii_digit()), take_while_m_n(1, 10, |b: u8| b.is_ascii_digit()),
std::str::from_utf8, std::str::from_utf8,
)(input)?; )
.parse(input)?;
let size: u32 = size.parse::<u32>().unwrap_or_default(); let size: u32 = size.parse::<u32>().unwrap_or_default();
SCLogDebug!("size {}", size); SCLogDebug!("size {}", size);
return Ok((input, size)); return Ok((input, size));
@ -415,8 +418,8 @@ impl POP3State {
} }
} }
// partial header, lets return incomplete // partial header, lets return incomplete
Err(nom7::Err::Incomplete(needed)) => { Err(nom8::Err::Incomplete(needed)) => {
if let nom7::Needed::Size(n) = needed { if let nom8::Needed::Size(n) = needed {
SCLogDebug!("needed {}", n); SCLogDebug!("needed {}", n);
let consumed = input.len() - start.len(); let consumed = input.len() - start.len();
let needed = start.len() + n.get(); let needed = start.len() + n.get();

Loading…
Cancel
Save