Skip to content

Commit 7068ea8

Browse files
committed
uefi: Fix ConfigurationString parsing needs to reverse VALUE bytes
1 parent 7a254be commit 7068ea8

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

uefi/src/proto/hii/config_str.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ impl ConfigurationString {
128128
/// # Returns
129129
///
130130
/// An iterator over bytes.
131-
pub fn parse_bytes_from_hex(hex: &str) -> impl Iterator<Item = u8> {
131+
pub fn parse_bytes_from_hex(hex: &str) -> impl DoubleEndedIterator<Item = u8> {
132132
hex.as_bytes().chunks(2).map(|chunk| {
133133
let chunk = str::from_utf8(chunk).unwrap_or_default();
134134
u8::from_str_radix(chunk, 16).unwrap_or_default()
@@ -238,7 +238,7 @@ impl FromStr for ConfigurationString {
238238
_ => return Err(ParseError::BlockName),
239239
};
240240
let value = match splitter.next() {
241-
Some(("VALUE", Some(data))) => Self::parse_bytes_from_hex(data).collect(),
241+
Some(("VALUE", Some(data))) => Self::parse_bytes_from_hex(data).rev().collect(),
242242
_ => return Err(ParseError::BlockConfig),
243243
};
244244

@@ -273,14 +273,14 @@ mod tests {
273273

274274
#[test]
275275
fn parse_single() {
276-
let input = "GUID=16d6474bd6a852459d44ccad2e0f4cf9&NAME=00490053004300530049005f0043004f004e004600490047005f004900460052005f004e00560044004100540041&PATH=0104140016d6474bd6a852459d44ccad2e0f4cf97fff0400&OFFSET=01d8&WIDTH=0001&VALUE=00&OFFSET=01d9&WIDTH=0001&VALUE=00&OFFSET=01da&WIDTH=0001&VALUE=00&OFFSET=01dc&WIDTH=0002&VALUE=03e8&OFFSET=01de&WIDTH=0001&VALUE=00&OFFSET=01df&WIDTH=0001&VALUE=00&OFFSET=05fe&WIDTH=0002&VALUE=0000&OFFSET=062a&WIDTH=0001&VALUE=00&OFFSET=062b&WIDTH=0001&VALUE=01&OFFSET=0fd4&WIDTH=0001&VALUE=00&OFFSET=0fd5&WIDTH=0001&VALUE=00";
276+
let input = "GUID=16d6474bd6a852459d44ccad2e0f4cf9&NAME=00490053004300530049005f0043004f004e004600490047005f004900460052005f004e00560044004100540041&PATH=0104140016d6474bd6a852459d44ccad2e0f4cf97fff0400&OFFSET=01d8&WIDTH=0002&VALUE=0011&OFFSET=01d9&WIDTH=0001&VALUE=00&OFFSET=01da&WIDTH=0001&VALUE=00&OFFSET=01dc&WIDTH=0002&VALUE=03e8&OFFSET=01de&WIDTH=0001&VALUE=00&OFFSET=01df&WIDTH=0001&VALUE=00&OFFSET=05fe&WIDTH=0002&VALUE=0000&OFFSET=062a&WIDTH=0001&VALUE=00&OFFSET=062b&WIDTH=0001&VALUE=01&OFFSET=0fd4&WIDTH=0001&VALUE=00&OFFSET=0fd5&WIDTH=0001&VALUE=00";
277277
let parsed = ConfigurationString::from_str(input).unwrap();
278278
assert_eq!(parsed.guid, guid!("4b47d616-a8d6-4552-9d44-ccad2e0f4cf9"));
279279
assert_eq!(parsed.name, "ISCSI_CONFIG_IFR_NVDATA");
280280
assert_eq!(parsed.elements.len(), 11);
281281
assert_eq!(parsed.elements[0].offset, 0x01d8);
282-
assert_eq!(parsed.elements[0].width, 1);
283-
assert_eq!(&parsed.elements[0].value, &[0x00]);
282+
assert_eq!(parsed.elements[0].width, 2);
283+
assert_eq!(&parsed.elements[0].value, &[0x11, 0x00]);
284284
assert_eq!(parsed.elements[10].offset, 0x0fd5);
285285
assert_eq!(parsed.elements[10].width, 1);
286286
assert_eq!(&parsed.elements[10].value, &[0x00]);

0 commit comments

Comments
 (0)