Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e500e189 authored by Martin Geisler's avatar Martin Geisler Committed by Gerrit Code Review
Browse files

Merge "pdl: Relax parsing to allow trailing data"

parents 2c8e81a3 a456d6a5
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -270,9 +270,7 @@ fn generate_data_struct(
            ) -> Result<Self> {
                let mut cell = Cell::new(#span);
                let packet = Self::parse_inner(&mut cell #(, #parse_arg_names)*)?;
                if !cell.get().is_empty() {
                    return Err(Error::InvalidPacketError);
                }
                // TODO(mgeisler): communicate back to user if !cell.get().is_empty()?
                Ok(packet)
            }

@@ -603,9 +601,7 @@ fn generate_packet_decl(
            pub fn parse(#span: &[u8]) -> Result<Self> {
                let mut cell = Cell::new(#span);
                let packet = Self::parse_inner(&mut cell)?;
                if !cell.get().is_empty() {
                    return Err(Error::InvalidPacketError);
                }
                // TODO(mgeisler): communicate back to user if !cell.get().is_empty()?
                Ok(packet)
            }

+1 −3
Original line number Diff line number Diff line
@@ -629,9 +629,7 @@ impl<'a> FieldParser<'a> {
                #(#match_values => {
                    let mut cell = Cell::new(payload);
                    let child_data = #child_ids_data::parse_inner(&mut cell #child_parse_args)?;
                    if !cell.get().is_empty() {
                        return Err(Error::InvalidPacketError);
                    }
                    // TODO(mgeisler): communicate back to user if !cell.get().is_empty()?
                    #packet_data_child::#child_ids(Arc::new(child_data))
                }),*
                _ if !payload.is_empty() => {
+0 −6
Original line number Diff line number Diff line
@@ -105,9 +105,6 @@ impl BarData {
    fn parse(bytes: &[u8]) -> Result<Self> {
        let mut cell = Cell::new(bytes);
        let packet = Self::parse_inner(&mut cell)?;
        if !cell.get().is_empty() {
            return Err(Error::InvalidPacketError);
        }
        Ok(packet)
    }
    fn parse_inner(mut bytes: &mut Cell<&[u8]>) -> Result<Self> {
@@ -166,9 +163,6 @@ impl Bar {
    pub fn parse(bytes: &[u8]) -> Result<Self> {
        let mut cell = Cell::new(bytes);
        let packet = Self::parse_inner(&mut cell)?;
        if !cell.get().is_empty() {
            return Err(Error::InvalidPacketError);
        }
        Ok(packet)
    }
    fn parse_inner(mut bytes: &mut Cell<&[u8]>) -> Result<Self> {
+0 −6
Original line number Diff line number Diff line
@@ -105,9 +105,6 @@ impl BarData {
    fn parse(bytes: &[u8]) -> Result<Self> {
        let mut cell = Cell::new(bytes);
        let packet = Self::parse_inner(&mut cell)?;
        if !cell.get().is_empty() {
            return Err(Error::InvalidPacketError);
        }
        Ok(packet)
    }
    fn parse_inner(mut bytes: &mut Cell<&[u8]>) -> Result<Self> {
@@ -166,9 +163,6 @@ impl Bar {
    pub fn parse(bytes: &[u8]) -> Result<Self> {
        let mut cell = Cell::new(bytes);
        let packet = Self::parse_inner(&mut cell)?;
        if !cell.get().is_empty() {
            return Err(Error::InvalidPacketError);
        }
        Ok(packet)
    }
    fn parse_inner(mut bytes: &mut Cell<&[u8]>) -> Result<Self> {
+0 −6
Original line number Diff line number Diff line
@@ -105,9 +105,6 @@ impl BarData {
    fn parse(bytes: &[u8]) -> Result<Self> {
        let mut cell = Cell::new(bytes);
        let packet = Self::parse_inner(&mut cell)?;
        if !cell.get().is_empty() {
            return Err(Error::InvalidPacketError);
        }
        Ok(packet)
    }
    fn parse_inner(mut bytes: &mut Cell<&[u8]>) -> Result<Self> {
@@ -155,9 +152,6 @@ impl Bar {
    pub fn parse(bytes: &[u8]) -> Result<Self> {
        let mut cell = Cell::new(bytes);
        let packet = Self::parse_inner(&mut cell)?;
        if !cell.get().is_empty() {
            return Err(Error::InvalidPacketError);
        }
        Ok(packet)
    }
    fn parse_inner(mut bytes: &mut Cell<&[u8]>) -> Result<Self> {
Loading