]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
rpc: enforce various field values
authorVictor Julien <vjulien@oisf.net>
Mon, 21 Feb 2022 09:08:41 +0000 (10:08 +0100)
committerJason Ish <jason.ish@oisf.net>
Tue, 15 Mar 2022 21:06:38 +0000 (15:06 -0600)
Minimal frag_len. Correct msgtype and others.

(cherry picked from commit 1c57e3c18d746743bc2cbcaba35f78b5f9b15675)

rust/src/nfs/rpc_records.rs

index 8565d998e3a647081f6a09ec449213be86be411a..c6a37c63b83c0bc52d335900db46d1de20cfe123 100644 (file)
@@ -127,10 +127,10 @@ named!(pub parse_rpc_packet_header<RpcPacketHeader>,
     do_parse!(
         fraghdr: bits!(tuple!(
                 take_bits!(u8, 1),       // is_last
-                take_bits!(u32, 31)))    // len
+                verify!(take_bits!(u32, 31), |v| v >= 24)))    // len
 
         >> xid: be_u32
-        >> msgtype: be_u32
+        >> msgtype: verify!(be_u32, |v| v <= 1)
         >> (
             RpcPacketHeader {
                 frag_is_last:fraghdr.0 == 1,
@@ -251,7 +251,7 @@ named!(pub parse_rpc_reply<RpcReplyPacket>,
    do_parse!(
        hdr: parse_rpc_packet_header
 
-       >> reply_state: be_u32
+       >> reply_state: verify!(be_u32, |v| v <= 1)
 
        >> verifier_flavor: be_u32
        >> verifier_len: verify!(be_u32, |size| size < RPC_MAX_VERIFIER_SIZE)
@@ -280,7 +280,7 @@ named!(pub parse_rpc_reply<RpcReplyPacket>,
 named!(pub parse_rpc_udp_packet_header<RpcPacketHeader>,
     do_parse!(
         xid: be_u32
-        >> msgtype: be_u32
+        >> msgtype: verify!(be_u32, |v| v <= 1)
         >> (
             RpcPacketHeader {
                 frag_is_last:false,
@@ -342,7 +342,7 @@ named!(pub parse_rpc_udp_reply<RpcReplyPacket>,
        >> verifier_len: verify!(be_u32, |size| size < RPC_MAX_VERIFIER_SIZE)
        >> verifier: cond!(verifier_len > 0, take!(verifier_len as usize))
 
-       >> reply_state: be_u32
+       >> reply_state: verify!(be_u32, |v| v <= 1)
        >> accept_state: be_u32
 
        >> pl: rest