Merge "wpa_supplicant: Use HIDL for keystore" into oc-dev
diff --git a/wpa_supplicant/hidl/hidl.cpp b/wpa_supplicant/hidl/hidl.cpp
index 753c87b..3acc7e2 100644
--- a/wpa_supplicant/hidl/hidl.cpp
+++ b/wpa_supplicant/hidl/hidl.cpp
@@ -370,7 +370,7 @@
     const struct p2p_peer_info *info, const u8 *peer_wfd_device_info,
     u8 peer_wfd_device_info_len)
 {
-	if (!wpa_s || !addr || !info || !peer_wfd_device_info)
+	if (!wpa_s || !addr || !info)
 		return;
 
 	wpa_printf(
diff --git a/wpa_supplicant/hidl/hidl_manager.cpp b/wpa_supplicant/hidl/hidl_manager.cpp
index a6749e8..a2eb101 100644
--- a/wpa_supplicant/hidl/hidl_manager.cpp
+++ b/wpa_supplicant/hidl/hidl_manager.cpp
@@ -1058,17 +1058,24 @@
     const struct p2p_peer_info *info, const u8 *peer_wfd_device_info,
     u8 peer_wfd_device_info_len)
 {
-	if (!wpa_s || !addr || !info || !peer_wfd_device_info)
+	if (!wpa_s || !addr || !info)
 		return;
 
 	if (p2p_iface_object_map_.find(wpa_s->ifname) ==
 	    p2p_iface_object_map_.end())
 		return;
 
-	if (peer_wfd_device_info_len != kWfdDeviceInfoLen) {
-		wpa_printf(
-		    MSG_ERROR, "Unexpected WFD device info len: %d",
-		    peer_wfd_device_info_len);
+	std::array<uint8_t, kWfdDeviceInfoLen> hidl_peer_wfd_device_info{};
+	if (peer_wfd_device_info) {
+		if (peer_wfd_device_info_len != kWfdDeviceInfoLen) {
+			wpa_printf(
+			    MSG_ERROR, "Unexpected WFD device info len: %d",
+			    peer_wfd_device_info_len);
+		} else {
+			os_memcpy(
+			    hidl_peer_wfd_device_info.data(),
+			    peer_wfd_device_info, kWfdDeviceInfoLen);
+		}
 	}
 
 	callWithEachP2pIfaceCallback(
@@ -1077,7 +1084,7 @@
 		&ISupplicantP2pIfaceCallback::onDeviceFound,
 		std::placeholders::_1, addr, info->p2p_device_addr,
 		info->pri_dev_type, info->device_name, info->config_methods,
-		info->dev_capab, info->group_capab, peer_wfd_device_info));
+		info->dev_capab, info->group_capab, hidl_peer_wfd_device_info));
 }
 
 void HidlManager::notifyP2pDeviceLost(
diff --git a/wpa_supplicant/hidl/iface_config_utils.cpp b/wpa_supplicant/hidl/iface_config_utils.cpp
index b6bd3d8..7dc5a6c 100644
--- a/wpa_supplicant/hidl/iface_config_utils.cpp
+++ b/wpa_supplicant/hidl/iface_config_utils.cpp
@@ -62,7 +62,10 @@
 	      {WpsConfigMethods::P2PS, "p2ps"},
 	      {WpsConfigMethods::VIRT_DISPLAY, "virtual_display"},
 	      {WpsConfigMethods::PHY_DISPLAY, "physical_display"}}) {
-		if (config_methods & flag_and_name.first) {
+		const auto flag =
+		    static_cast<std::underlying_type<WpsConfigMethods>::type>(
+			flag_and_name.first);
+		if ((config_methods & flag) == flag) {
 			config_methods_str += flag_and_name.second;
 			config_methods_str += " ";
 		}