diff --git a/wpa_supplicant/hidl/hidl_manager.cpp b/wpa_supplicant/hidl/hidl_manager.cpp
index 39d1b72..861f489 100644
--- a/wpa_supplicant/hidl/hidl_manager.cpp
+++ b/wpa_supplicant/hidl/hidl_manager.cpp
@@ -1232,10 +1232,8 @@
 
 	std::string hidl_generated_pin;
 	if (generated_pin > 0) {
-		hidl_generated_pin.reserve(9);
-		os_snprintf(
-		    &hidl_generated_pin[0], hidl_generated_pin.size(), "%08d",
-		    generated_pin);
+		hidl_generated_pin =
+		    misc_utils::convertWpsPinToString(generated_pin);
 	}
 	bool hidl_is_request = (request == 1 ? true : false);
 
diff --git a/wpa_supplicant/hidl/misc_utils.h b/wpa_supplicant/hidl/misc_utils.h
index fb8b86f..354ec32 100644
--- a/wpa_supplicant/hidl/misc_utils.h
+++ b/wpa_supplicant/hidl/misc_utils.h
@@ -15,6 +15,7 @@
 }
 
 namespace {
+constexpr size_t kWpsPinNumDigits = 8;
 // Custom deleter for wpabuf.
 void freeWpaBuf(wpabuf *ptr) { wpabuf_free(ptr); }
 }  // namespace
@@ -53,6 +54,14 @@
 	}
 }
 
+// Returns a string holding the wps pin.
+inline std::string convertWpsPinToString(int pin)
+{
+	char pin_str[kWpsPinNumDigits + 1];
+	snprintf(pin_str, sizeof(pin_str), "%08d", pin);
+	return pin_str;
+}
+
 }  // namespace misc_utils
 }  // namespace implementation
 }  // namespace V1_0
diff --git a/wpa_supplicant/hidl/p2p_iface.cpp b/wpa_supplicant/hidl/p2p_iface.cpp
index d71bc71..86f6f8f 100644
--- a/wpa_supplicant/hidl/p2p_iface.cpp
+++ b/wpa_supplicant/hidl/p2p_iface.cpp
@@ -696,8 +696,7 @@
 	std::string pin_ret;
 	if (provision_method == WpsProvisionMethod::DISPLAY &&
 	    pre_selected_pin.empty()) {
-		pin_ret.reserve(9);
-		os_snprintf(&pin_ret[0], pin_ret.size(), "%08d", new_pin);
+		pin_ret = misc_utils::convertWpsPinToString(new_pin);
 	}
 	return {{SupplicantStatusCode::SUCCESS, ""}, pin_ret};
 }
@@ -1058,10 +1057,8 @@
 	if (pin < 0) {
 		return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, ""};
 	}
-	std::string pin_str;
-	pin_str.reserve(9);
-	snprintf(&pin_str[0], pin_str.size(), "%08d", pin);
-	return {{SupplicantStatusCode::SUCCESS, ""}, pin_str};
+	return {{SupplicantStatusCode::SUCCESS, ""},
+		misc_utils::convertWpsPinToString(pin)};
 }
 
 SupplicantStatus P2pIface::cancelWpsInternal(const std::string& group_ifname)
diff --git a/wpa_supplicant/hidl/sta_iface.cpp b/wpa_supplicant/hidl/sta_iface.cpp
index aee2ae9..d3a430f 100644
--- a/wpa_supplicant/hidl/sta_iface.cpp
+++ b/wpa_supplicant/hidl/sta_iface.cpp
@@ -10,6 +10,7 @@
 #include "hidl_manager.h"
 #include "hidl_return_util.h"
 #include "iface_config_utils.h"
+#include "misc_utils.h"
 #include "sta_iface.h"
 
 extern "C" {
@@ -873,10 +874,8 @@
 	if (pin < 0) {
 		return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, ""};
 	}
-	std::string pin_str;
-	pin_str.reserve(9);
-	snprintf(&pin_str[0], pin_str.size(), "%08d", pin);
-	return {{SupplicantStatusCode::SUCCESS, ""}, pin_str};
+	return {{SupplicantStatusCode::SUCCESS, ""},
+		misc_utils::convertWpsPinToString(pin)};
 }
 
 SupplicantStatus StaIface::cancelWpsInternal()
