diff --git a/wpa_supplicant/aidl/sta_iface.cpp b/wpa_supplicant/aidl/sta_iface.cpp
index 238a092..4620538 100644
--- a/wpa_supplicant/aidl/sta_iface.cpp
+++ b/wpa_supplicant/aidl/sta_iface.cpp
@@ -2089,8 +2089,6 @@
 				      struct type4_params *param)
 {
 	u8 classifier_mask = 0;
-	int ret;
-	char addr[INET6_ADDRSTRLEN];
 	uint32_t inMask = static_cast<uint32_t>(qos_policy_data.classifierParams.classifierParamMask);
 
 	if (qos_policy_data.classifierParams.ipVersion ==
@@ -2114,24 +2112,14 @@
 				wpa_printf(MSG_ERROR, "Invalid source IP");
 				return -1;
 			}
-			os_memcpy(addr, qos_policy_data.classifierParams.srcIp.data(), 4);
-			ret = inet_pton(AF_INET, addr,
-					&param->ip_params.v4.src_ip);
+			os_memcpy(&param->ip_params.v4.src_ip, qos_policy_data.classifierParams.srcIp.data(), 4);
 		} else {
 			if (qos_policy_data.classifierParams.srcIp.size() !=
 			    sizeof(param->ip_params.v6.src_ip)) {
 				wpa_printf(MSG_ERROR, "Invalid source IP");
 				return -1;
 			}
-			os_memcpy(addr, qos_policy_data.classifierParams.srcIp.data(), 16);
-			ret = inet_pton(AF_INET6, addr,
-					&param->ip_params.v6.src_ip);
-		}
-		if (ret != 1) {
-			wpa_printf(MSG_ERROR,
-				   "Error converting src IP address to binary ret=%d",
-				   ret);
-			return -1;
+			os_memcpy(&param->ip_params.v6.src_ip, qos_policy_data.classifierParams.srcIp.data(), 16);
 		}
 
 		/* Classifier Mask - bit 1 = Source IP Address */
@@ -2145,25 +2133,14 @@
 				wpa_printf(MSG_ERROR, "Invalid destination IP");
 				return -1;
 			}
-			os_memcpy(addr, qos_policy_data.classifierParams.dstIp.data(), 4);
-			ret = inet_pton(AF_INET, addr,
-					&param->ip_params.v4.dst_ip);
+			os_memcpy(&param->ip_params.v4.dst_ip, qos_policy_data.classifierParams.dstIp.data(), 4);
 		} else {
 			if (qos_policy_data.classifierParams.dstIp.size() !=
 			    sizeof(param->ip_params.v6.dst_ip)) {
 				wpa_printf(MSG_ERROR, "Invalid destination IP");
 				return -1;
 			}
-			os_memcpy(addr, qos_policy_data.classifierParams.dstIp.data(), 16);
-			ret = inet_pton(AF_INET6, addr,
-					&param->ip_params.v6.dst_ip);
-		}
-
-		if (ret != 1) {
-			wpa_printf(MSG_ERROR,
-				   "Error converting dst IP address to binary ret=%d",
-				   ret);
-			return -1;
+			os_memcpy(&param->ip_params.v6.dst_ip, qos_policy_data.classifierParams.dstIp.data(), 16);
 		}
 
 		/* Classifier Mask - bit 2 = Destination IP Address */
