From ddf14e51dcf5dabdb4bc07414a118530e2a1b819 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Tue, 11 Jan 2022 08:09:56 +0100 Subject: [PATCH] nfs2: improve READ parsing Take fill_bytes into account. --- rust/src/nfs/nfs2_records.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/rust/src/nfs/nfs2_records.rs b/rust/src/nfs/nfs2_records.rs index 991c0ba333..90516c42df 100644 --- a/rust/src/nfs/nfs2_records.rs +++ b/rust/src/nfs/nfs2_records.rs @@ -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, -- 2.47.2