undefined4 * ipparse_hostnetwork(char *param_1,uint *param_2)
{
undefined4 *puVar1;
netent *pnVar2;
uint uVar3;
hostent *phVar4;
undefined4 *puVar5;
int iVar6;
puVar1 = (undefined4 *)xtables_numeric_to_ipaddr();
if (puVar1 == (undefined4 *)0x0) {
pnVar2 = getnetbyname(param_1);
if ((pnVar2 == (netent *)0x0) || (pnVar2->n_addrtype != 2)) {
*param_2 = 0;
phVar4 = gethostbyname(param_1);
if ((phVar4 != (hostent *)0x0) && ((phVar4->h_addrtype == 2 && (phVar4->h_length == 4)))) {
while (phVar4->h_addr_list[*param_2] != (char *)0x0) {
*param_2 = *param_2 + 1;
}
puVar1 = (undefined4 *)xtables_calloc() //possible issue identified - semgrep
iVar6 = 0;
for (uVar3 = 0; uVar3 < *param_2; uVar3 = uVar3 + 1) {
memcpy((void *)((int)puVar1 + iVar6),*(void **)((int)phVar4->h_addr_list + iVar6),4) //possible issue identified - semgrep
iVar6 = iVar6 + 4;
}
if (puVar1 != (undefined4 *)0x0) {
return puVar1;
}
}
puVar1 = (undefined4 *)0x2;
(**(code **)(xt_params + 0x14))(2,0x5954,param_1);
return puVar1;
}
uVar3 = pnVar2->n_net;
addr_5298 = uVar3 << 0x18 | uVar3 >> 0x18 | uVar3 >> 8 & 0xff00 | (uVar3 & 0xff00) << 8;
puVar1 = &addr_5298;
}
puVar5 = (undefined4 *)xtables_malloc(4) //possible issue identified - semgrep
*puVar5 = *puVar1;
*param_2 = 1;
return puVar5;
}