addrinfo * ip6parse_hostnetwork(char *param_1,undefined4 *param_2)
{
bool bVar1;
void *__src;
int iVar2;
addrinfo *__req;
addrinfo *local_40;
addrinfo local_3c;
__src = (void *)xtables_numeric_to_ip6addr();
if (__src == (void *)0x0) {
__req = &local_3c;
memset(__req,0,0x20) //possible issue identified - semgrep
local_3c.ai_flags = 2;
local_3c.ai_socktype = 3;
local_3c.ai_protocol = 0x29;
local_3c.ai_family = 10;
local_3c.ai_next = (addrinfo *)0x0;
*param_2 = 0;
iVar2 = getaddrinfo(param_1,(char *)0x0,__req,&local_40);
if (((iVar2 == 0) && (local_40->ai_family == 10)) && (local_40->ai_addrlen == 0x1c)) {
addr_5591 = (addrinfo *)xtables_malloc(0x10) //possible issue identified - semgrep
memcpy(addr_5591,local_40->ai_addr->sa_data + 6,0x10) //possible issue identified - semgrep
freeaddrinfo(local_40);
__req = addr_5591;
bVar1 = addr_5591 != (addrinfo *)0x0;
*param_2 = 1;
if (bVar1) {
return __req;
}
}
(**(code **)(xt_params + 0x14))(2,0x5954,param_1);
}
else {
__req = (addrinfo *)xtables_malloc(0x10) //possible issue identified - semgrep
memcpy(__req,__src,0x10) //possible issue identified - semgrep
*param_2 = 1;
}
return __req;
}