From 9748050ff651fa7026da4c03411474c0ca3c39d6 Mon Sep 17 00:00:00 2001 From: Daniel Wyatt Date: Wed, 19 Aug 2026 22:46:32 -0400 Subject: [PATCH 1/2] Fix end tag value for ConcatenateResTemplate. The end tag value itself should be 0x79, that is tag 0x78 | 1 (length). --- src/aml/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/aml/mod.rs b/src/aml/mod.rs index 6d67f282..8e2a482c 100644 --- a/src/aml/mod.rs +++ b/src/aml/mod.rs @@ -532,7 +532,7 @@ where let mut buffer = Vec::from(source1); buffer.extend_from_slice(source2); // Add a new end-tag - buffer.push(0x78); + buffer.push(0x79); // Don't calculate the new real checksum - just use 0 buffer.push(0x00); Object::Buffer(buffer).wrap() From 31b3057de7bb9b52e14e406e8e7048c36a4fcb6f Mon Sep 17 00:00:00 2001 From: Daniel Wyatt Date: Wed, 19 Aug 2026 23:03:12 -0400 Subject: [PATCH 2/2] Fix ConcatenateResTemplate end tags. When concatenating resource templates, only the descriptors themselves should be concatenated, not their end tags. --- src/aml/mod.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/aml/mod.rs b/src/aml/mod.rs index 8e2a482c..2e043463 100644 --- a/src/aml/mod.rs +++ b/src/aml/mod.rs @@ -529,8 +529,15 @@ where let source1 = source1.as_buffer()?; let source2 = source2.as_buffer()?; let result = { - let mut buffer = Vec::from(source1); - buffer.extend_from_slice(source2); + fn strip_end_tag(buf: &[u8]) -> &[u8] { + if buf.len() >= 2 && buf[buf.len() - 2] == 0x79 { + buf.split_at(buf.len() - 2).0 + } else { + buf + } + } + let mut buffer = Vec::from(strip_end_tag(source1)); + buffer.extend_from_slice(strip_end_tag(source2)); // Add a new end-tag buffer.push(0x79); // Don't calculate the new real checksum - just use 0