wasm_module: accept simpler modules with missing sections

This commit is contained in:
Brian Carroll 2022-11-24 20:10:13 +00:00
parent 60a671362f
commit f103801457
No known key found for this signature in database
GPG key ID: 5C7B2EC4101703C0
2 changed files with 12 additions and 2 deletions

View file

@ -739,6 +739,9 @@ impl SkipBytes for Limits {
impl Parse<()> for Limits {
fn parse(_: (), bytes: &[u8], cursor: &mut usize) -> Result<Self, ParseError> {
if *cursor >= bytes.len() {
return Ok(Limits::Min(0));
}
let variant_id = bytes[*cursor];
*cursor += 1;
@ -1488,6 +1491,13 @@ impl<'a> DataSection<'a> {
impl<'a> Parse<&'a Bump> for DataSection<'a> {
fn parse(arena: &'a Bump, module_bytes: &[u8], cursor: &mut usize) -> Result<Self, ParseError> {
if *cursor >= module_bytes.len() {
return Ok(DataSection {
end_addr: 0,
count: 0,
bytes: Vec::<u8>::new_in(arena),
});
}
let (count, range) = parse_section(Self::ID, module_bytes, cursor)?;
let end = range.end;