]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
nfs4: fix attr parsing corner case
authorVictor Julien <victor@inliniac.net>
Wed, 21 Mar 2018 14:52:44 +0000 (15:52 +0100)
committerVictor Julien <victor@inliniac.net>
Thu, 5 Apr 2018 13:21:48 +0000 (15:21 +0200)
rust/src/nfs/nfs4_records.rs

index 0f77215e72624741832d895a5abd2c26fb1ecaad..2db54cb619039d245203d358f30ab19423b3d504 100644 (file)
@@ -63,7 +63,8 @@ named!(nfs4_parse_attrs<Nfs4Attr>,
     do_parse!(
         attr_cnt: be_u32
     >>  attr_mask1: be_u32
-    >>  attr_mask2: cond!(attr_cnt == 2, be_u32)
+    >>  attr_mask2: cond!(attr_cnt >= 2, be_u32)
+    >>  cond!(attr_cnt == 3, be_u32)
     >>  nfs4_parse_attr_fields
     >> ( Nfs4Attr {
             attr_mask: ((attr_mask1 as u64) << 32) | attr_mask2.unwrap_or(0) as u64,
@@ -74,7 +75,8 @@ named!(nfs4_parse_attrbits<Nfs4Attr>,
     do_parse!(
         attr_cnt: be_u32
     >>  attr_mask1: be_u32
-    >>  attr_mask2: cond!(attr_cnt == 2, be_u32)
+    >>  attr_mask2: cond!(attr_cnt >= 2, be_u32)
+    >>  cond!(attr_cnt == 3, be_u32)
     >> ( Nfs4Attr {
             attr_mask: ((attr_mask1 as u64) << 32) | attr_mask2.unwrap_or(0) as u64,
         } )