]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
rfb: be more strict parsing the version
authorSascha Steinbiss <satta@debian.org>
Fri, 9 Jun 2023 09:12:02 +0000 (11:12 +0200)
committerVictor Julien <vjulien@oisf.net>
Tue, 27 Jun 2023 07:44:48 +0000 (09:44 +0200)
rust/src/rfb/parser.rs

index 0fba65333a36c211f5896b435a5eeb689ede9f6e..bdbc1b7e73d14a3747430c5fbb9c19e9c9b84307 100644 (file)
@@ -18,6 +18,7 @@
 // Author: Frank Honza <frank.honza@dcso.de>
 
 use nom7::bytes::streaming::take;
+use nom7::bytes::streaming::tag;
 use nom7::combinator::map_res;
 use nom7::number::streaming::*;
 use nom7::*;
@@ -115,12 +116,11 @@ pub struct ServerInit {
 }
 
 pub fn parse_protocol_version(i: &[u8]) -> IResult<&[u8], ProtocolVersion> {
-    let (i, _rfb_string) = map_res(take(3_usize), str::from_utf8)(i)?;
-    let (i, _) = be_u8(i)?;
+    let (i, _) = tag("RFB ")(i)?;
     let (i, major) = map_res(take(3_usize), str::from_utf8)(i)?;
-    let (i, _) = be_u8(i)?;
+    let (i, _) = tag(".")(i)?;
     let (i, minor) = map_res(take(3_usize), str::from_utf8)(i)?;
-    let (i, _) = be_u8(i)?;
+    let (i, _) = tag("\n")(i)?;
     Ok((
         i,
         ProtocolVersion {