named!(pub parse_rpc_packet_header<RpcPacketHeader>,
do_parse!(
- fraghdr: parse_bits
+ fraghdr: verify!(parse_bits, |v: &(u8,u32)| v.1 >= 24)
>> xid: be_u32
- >> msgtype: be_u32
+ >> msgtype: verify!(be_u32, |&v| v <= 1)
>> (
RpcPacketHeader {
frag_is_last:fraghdr.0 == 1,
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)
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,
>> 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