swf: Throw an error if an ABC bitstream calls for a parameter with more optional parameters than actual ones.
This commit is contained in:
parent
5018421eef
commit
7dc86fdeb0
|
@ -245,11 +245,13 @@ impl<'a> Reader<'a> {
|
||||||
|
|
||||||
if flags & 0x08 != 0 {
|
if flags & 0x08 != 0 {
|
||||||
let num_optional_params = self.read_u30()? as usize;
|
let num_optional_params = self.read_u30()? as usize;
|
||||||
let start = params.len() - num_optional_params;
|
if let Some(start) = params.len().checked_sub(num_optional_params) {
|
||||||
let end = params.len();
|
for param in &mut params[start..] {
|
||||||
for param in &mut params[start..end] {
|
|
||||||
param.default_value = Some(self.read_constant_value()?);
|
param.default_value = Some(self.read_constant_value()?);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
return Err(Error::invalid_data("Too many optional parameters"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if flags & 0x80 != 0 {
|
if flags & 0x80 != 0 {
|
||||||
|
|
Loading…
Reference in New Issue