update_engine: Fix hex encoding telemetry fields
Little Endian hex encoding doesn't work with base lib.
Void pointer type casted to char pointer will lead to reading the bytes
out of order.
BUG=b:214193054
TEST=FEATURES=test P2_TEST_FILTER=*TelemetryInfoTest*-*RunAsRoot*
TEST=emerge-$B update_engine
Change-Id: I8d8175c153745494d35208054757e2521770411b
Reviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/3400222
Tested-by: Jae Hoon Kim <[email protected]>
Auto-Submit: Jae Hoon Kim <[email protected]>
Reviewed-by: Ted Brandston <[email protected]>
Commit-Queue: Jae Hoon Kim <[email protected]>
diff --git a/common/telemetry_info.cc b/common/telemetry_info.cc
index 355ab4f..1acdb5a 100644
--- a/common/telemetry_info.cc
+++ b/common/telemetry_info.cc
@@ -18,6 +18,7 @@
#include <base/strings/string_number_conversions.h>
#include <base/strings/string_util.h>
+#include <base/strings/stringprintf.h>
namespace chromeos_update_engine {
@@ -55,20 +56,16 @@
std::get_if<BusDevice::PciBusInfo>(&bus_device.bus_type_info)) {
ids.push_back(base::JoinString(
{
- base::HexEncode(&pci_bus_info->vendor_id,
- sizeof(decltype(pci_bus_info->vendor_id))),
- base::HexEncode(&pci_bus_info->device_id,
- sizeof(decltype(pci_bus_info->device_id))),
+ base::StringPrintf("%04X", pci_bus_info->vendor_id),
+ base::StringPrintf("%04X", pci_bus_info->device_id),
},
":"));
} else if (const auto* usb_bus_info = std::get_if<BusDevice::UsbBusInfo>(
&bus_device.bus_type_info)) {
ids.push_back(base::JoinString(
{
- base::HexEncode(&usb_bus_info->vendor_id,
- sizeof(decltype(usb_bus_info->vendor_id))),
- base::HexEncode(&usb_bus_info->product_id,
- sizeof(decltype(usb_bus_info->product_id))),
+ base::StringPrintf("%04X", usb_bus_info->vendor_id),
+ base::StringPrintf("%04X", usb_bus_info->product_id),
},
":"));
}
diff --git a/common/telemetry_info_unittest.cc b/common/telemetry_info_unittest.cc
index f9cfee0..950c7b2 100644
--- a/common/telemetry_info_unittest.cc
+++ b/common/telemetry_info_unittest.cc
@@ -69,8 +69,8 @@
TelemetryInfo::BusDevice::BusDeviceClass::kWirelessController,
.bus_type_info =
TelemetryInfo::BusDevice::PciBusInfo{
- .vendor_id = 1,
- .device_id = 2,
+ .vendor_id = 0x0001,
+ .device_id = 0x0002,
},
},
{
@@ -78,8 +78,8 @@
TelemetryInfo::BusDevice::BusDeviceClass::kWirelessController,
.bus_type_info =
TelemetryInfo::BusDevice::PciBusInfo{
- .vendor_id = 3,
- .device_id = 4,
+ .vendor_id = 0x0003,
+ .device_id = 0x0004,
},
},
{
@@ -87,8 +87,8 @@
TelemetryInfo::BusDevice::BusDeviceClass::kWirelessController,
.bus_type_info =
TelemetryInfo::BusDevice::UsbBusInfo{
- .vendor_id = 5,
- .product_id = 6,
+ .vendor_id = 0x0005,
+ .product_id = 0x0006,
},
},
// Should ignore non wireless controller.
@@ -97,12 +97,12 @@
TelemetryInfo::BusDevice::BusDeviceClass::kDisplayController,
.bus_type_info =
TelemetryInfo::BusDevice::PciBusInfo{
- .vendor_id = 7,
- .device_id = 8,
+ .vendor_id = 0x0007,
+ .device_id = 0x0008,
},
},
};
- EXPECT_EQ("0100:0200 0300:0400 0500:0600", telemetry_info.GetWirelessIds());
+ EXPECT_EQ("0001:0002 0003:0004 0005:0006", telemetry_info.GetWirelessIds());
}
TEST_F(TelemetryInfoTest, GetGpuIds) {
@@ -112,8 +112,8 @@
TelemetryInfo::BusDevice::BusDeviceClass::kDisplayController,
.bus_type_info =
TelemetryInfo::BusDevice::PciBusInfo{
- .vendor_id = 1,
- .device_id = 2,
+ .vendor_id = 0x8086,
+ .device_id = 0x0002,
},
},
// Should ignore non display controller.
@@ -122,12 +122,12 @@
TelemetryInfo::BusDevice::BusDeviceClass::kWirelessController,
.bus_type_info =
TelemetryInfo::BusDevice::PciBusInfo{
- .vendor_id = 3,
- .device_id = 4,
+ .vendor_id = 0x0003,
+ .device_id = 0x0004,
},
},
};
- EXPECT_EQ("0100:0200", telemetry_info.GetGpuIds());
+ EXPECT_EQ("8086:0002", telemetry_info.GetGpuIds());
}
} // namespace chromeos_update_engine
diff --git a/cros/omaha_request_builder_xml_unittest.cc b/cros/omaha_request_builder_xml_unittest.cc
index f3ecbce..28b8006 100644
--- a/cros/omaha_request_builder_xml_unittest.cc
+++ b/cros/omaha_request_builder_xml_unittest.cc
@@ -591,8 +591,8 @@
TelemetryInfo::BusDevice::BusDeviceClass::kWirelessController,
.bus_type_info =
TelemetryInfo::BusDevice::PciBusInfo{
- .vendor_id = 1,
- .device_id = 2,
+ .vendor_id = 0x0001,
+ .device_id = 0x0002,
.driver = "fake-driver-1",
},
},
@@ -601,8 +601,8 @@
TelemetryInfo::BusDevice::BusDeviceClass::kWirelessController,
.bus_type_info =
TelemetryInfo::BusDevice::UsbBusInfo{
- .vendor_id = 3,
- .product_id = 4,
+ .vendor_id = 0x0003,
+ .product_id = 0x0004,
},
},
{
@@ -610,8 +610,8 @@
TelemetryInfo::BusDevice::BusDeviceClass::kDisplayController,
.bus_type_info =
TelemetryInfo::BusDevice::PciBusInfo{
- .vendor_id = 5,
- .device_id = 6,
+ .vendor_id = 0x0005,
+ .device_id = 0x0006,
.driver = "fake-driver-2",
},
},
@@ -620,8 +620,8 @@
TelemetryInfo::BusDevice::BusDeviceClass::kDisplayController,
.bus_type_info =
TelemetryInfo::BusDevice::UsbBusInfo{
- .vendor_id = 7,
- .product_id = 8,
+ .vendor_id = 0x00AA,
+ .product_id = 0x1111,
},
},
// Should be ignored.
@@ -630,8 +630,8 @@
TelemetryInfo::BusDevice::BusDeviceClass::kEthernetController,
.bus_type_info =
TelemetryInfo::BusDevice::PciBusInfo{
- .vendor_id = 9,
- .device_id = 10,
+ .vendor_id = 0x0009,
+ .device_id = 0x000A,
.driver = "fake-driver-3",
},
},
@@ -640,8 +640,8 @@
TelemetryInfo::BusDevice::BusDeviceClass::kEthernetController,
.bus_type_info =
TelemetryInfo::BusDevice::UsbBusInfo{
- .vendor_id = 11,
- .product_id = 12,
+ .vendor_id = 0x000B,
+ .product_id = 0x000C,
},
},
},
@@ -677,8 +677,8 @@
size,
model_name.c_str(),
"fake-driver-1",
- "0100:0200 0300:0400",
- "0500:0600 0700:0800")))
+ "0001:0002 0003:0004",
+ "0005:0006 00AA:1111")))
<< request_xml;
}