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)
         }
     }