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