]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
nfs2: improve READ parsing 6764/head
authorVictor Julien <vjulien@oisf.net>
Tue, 11 Jan 2022 07:09:56 +0000 (08:09 +0100)
committerVictor Julien <vjulien@oisf.net>
Tue, 11 Jan 2022 07:10:00 +0000 (08:10 +0100)
Take fill_bytes into account.

rust/src/nfs/nfs2_records.rs

index 991c0ba33317bff781c1feba681539505b698e72..90516c42dfa55f7974ca08cf5635866c8599cde8 100644 (file)
@@ -19,7 +19,7 @@
 
 use crate::nfs::nfs_records::*;
 use nom7::bytes::streaming::take;
-use nom7::combinator::rest;
+use nom7::combinator::{rest, cond};
 use nom7::number::streaming::be_u32;
 use nom7::IResult;
 
@@ -69,7 +69,9 @@ pub fn parse_nfs2_reply_read(i: &[u8]) -> IResult<&[u8], NfsReplyRead> {
     let (i, status) = be_u32(i)?;
     let (i, attr_blob) = take(68_usize)(i)?;
     let (i, data_len) = be_u32(i)?;
-    let (i, data_contents) = rest(i)?;
+    let (i, data_contents) = take(data_len)(i)?;
+    let fill_bytes = 4 - (data_len % 4);
+    let (i, _) = cond(fill_bytes != 0, take(fill_bytes))(i)?;
     let reply = NfsReplyRead {
         status,
         attr_follows: 1,