diff --git a/src/acpi/aml/namespace.rs b/src/acpi/aml/namespace.rs index 935c5658b3ff682bc5c156adea15998e7e622a6b..2fa363adf13262298b58a708deb986e788757802 100644 --- a/src/acpi/aml/namespace.rs +++ b/src/acpi/aml/namespace.rs @@ -150,6 +150,17 @@ impl AmlValue { AmlValue::String(ref s) => { Ok(s.clone().into_bytes()) }, + AmlValue::BufferField { ref source_buf, ref index, ref length } => { + let buf = source_buf.get_as_buffer()?; + let idx = index.get_as_integer()? as usize; + let len = length.get_as_integer()? as usize; + + if idx + len > buf.len() { + return Err(AmlError::AmlValueError); + } + + Ok(buf[idx .. idx + len].to_vec()) + }, _ => Err(AmlError::AmlValueError) } }