Skip to content

Commit 1768599

Browse files
committed
rust: convert ssh to nom 8
1 parent f732528 commit 1768599

2 files changed

Lines changed: 16 additions & 16 deletions

File tree

rust/src/ssh/parser.rs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@
1818
use digest::Digest;
1919
use digest::Update;
2020
use md5::Md5;
21-
use nom7::branch::alt;
22-
use nom7::bytes::streaming::{is_not, tag, take, take_while};
23-
use nom7::character::streaming::char;
24-
use nom7::combinator::{complete, eof, not, rest, verify};
25-
use nom7::multi::length_data;
26-
use nom7::number::streaming::{be_u32, be_u8};
27-
use nom7::sequence::terminated;
28-
use nom7::IResult;
21+
use nom8::branch::alt;
22+
use nom8::bytes::streaming::{is_not, tag, take, take_while};
23+
use nom8::character::streaming::char;
24+
use nom8::combinator::{complete, eof, not, rest, verify};
25+
use nom8::multi::length_data;
26+
use nom8::number::streaming::{be_u32, be_u8};
27+
use nom8::sequence::terminated;
28+
use nom8::{IResult, Parser};
2929
use std::fmt;
3030

3131
#[derive(PartialEq, Eq, Copy, Clone, Debug)]
@@ -74,13 +74,13 @@ fn is_not_lineend(b: u8) -> bool {
7474
pub fn ssh_parse_line(i: &[u8]) -> IResult<&[u8], &[u8]> {
7575
fn parser(i: &[u8]) -> IResult<&[u8], &[u8]> {
7676
let (i, bytes) = tag("\r")(i)?;
77-
let (i, _) = not(eof)(i)?;
77+
let (i, _) = not(eof).parse(i)?;
7878
Ok((i, bytes))
7979
}
8080
terminated(
8181
take_while(is_not_lineend),
8282
alt((tag("\n"), tag("\r\n"), parser)),
83-
)(i)
83+
).parse(i)
8484
}
8585

8686
#[derive(PartialEq, Eq)]
@@ -95,7 +95,7 @@ pub fn ssh_parse_banner(i: &[u8]) -> IResult<&[u8], SshBanner<'_>> {
9595
let (i, _) = tag("SSH-")(i)?;
9696
let (i, protover) = is_not("-")(i)?;
9797
let (i, _) = char('-')(i)?;
98-
let (i, swver) = alt((complete(is_not(" \r\n")), rest))(i)?;
98+
let (i, swver) = alt((complete(is_not(" \r\n")), rest)).parse(i)?;
9999
//remaining after space is comments
100100
Ok((i, SshBanner { protover, swver }))
101101
}
@@ -118,7 +118,7 @@ impl fmt::Display for SshRecordHeader {
118118
}
119119

120120
pub fn ssh_parse_record_header(i: &[u8]) -> IResult<&[u8], SshRecordHeader> {
121-
let (i, pkt_len) = verify(be_u32, |&val| val > 1)(i)?;
121+
let (i, pkt_len) = verify(be_u32, |&val| val > 1).parse(i)?;
122122
let (i, padding_len) = be_u8(i)?;
123123
let (i, msg_code) = be_u8(i)?;
124124
Ok((
@@ -133,7 +133,7 @@ pub fn ssh_parse_record_header(i: &[u8]) -> IResult<&[u8], SshRecordHeader> {
133133

134134
//test for evasion against pkt_len=0or1...
135135
pub fn ssh_parse_record(i: &[u8]) -> IResult<&[u8], SshRecordHeader> {
136-
let (i, pkt_len) = verify(be_u32, |&val| val > 1)(i)?;
136+
let (i, pkt_len) = verify(be_u32, |&val| val > 1).parse(i)?;
137137
let (i, padding_len) = be_u8(i)?;
138138
let (i, msg_code) = be_u8(i)?;
139139
let (i, _) = take((pkt_len - 2) as usize)(i)?;
@@ -203,7 +203,7 @@ impl SshPacketKeyExchange<'_> {
203203

204204
#[inline]
205205
fn parse_string(i: &[u8]) -> IResult<&[u8], &[u8]> {
206-
length_data(be_u32)(i)
206+
length_data(be_u32).parse(i)
207207
}
208208

209209
pub fn ssh_parse_key_exchange(i: &[u8]) -> IResult<&[u8], SshPacketKeyExchange<'_>> {
@@ -244,7 +244,7 @@ pub fn ssh_parse_key_exchange(i: &[u8]) -> IResult<&[u8], SshPacketKeyExchange<'
244244
mod tests {
245245

246246
use super::*;
247-
use nom7::{Err, Needed};
247+
use nom8::{Err, Needed};
248248

249249
/// Simple test of some valid data.
250250
#[test]

rust/src/ssh/ssh.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use crate::core::*;
2121
use crate::direction::Direction;
2222
use crate::flow::Flow;
2323
use crate::frames::Frame;
24-
use nom7::Err;
24+
use nom8::Err;
2525
use std::ffi::CString;
2626
use std::sync::atomic::{AtomicBool, Ordering};
2727
use suricata_sys::sys::{

0 commit comments

Comments
 (0)