/* WARNING: Removing unreachable block (ram,0x004127d8) */
undefined4 configure_pool(int *param_1)
{
byte *pbVar1;
byte bVar2;
undefined4 uVar3;
undefined4 uVar4;
undefined4 *__ptr;
int *piVar5;
int iVar6;
byte *pbVar7;
undefined4 uVar8;
char *pcVar9;
byte *pbVar10;
dprintf(7,"configure_pool","called");
if (param_1 != (int *)0x0) {
do {
piVar5 = (int *)param_1[3];
if (piVar5 == (int *)0x0) {
LAB_004127ac:
iVar6 = param_1[2];
pcVar9 = "%s:%d pool \'%s\' has no range declaration";
LAB_00412598:
dprintf(3,"configure_pool",pcVar9,configfilename,iVar6);
return 0xffffffff;
}
do {
if (piVar5[2] != 10) {
iVar6 = piVar5[3];
pcVar9 = "%s:%d invalid pool configuration";
goto LAB_00412598;
}
pbVar10 = (byte *)piVar5[7];
piVar5 = (int *)*piVar5;
} while (piVar5 != (int *)0x0);
if (pbVar10 == (byte *)0x0) goto LAB_004127ac;
pcVar9 = (char *)param_1[1];
if (pcVar9 == (char *)0x0) {
LAB_00412604:
dprintf(3,"configure_pool","faled to craete pool \'%s\'",pcVar9);
return 0xffffffff;
}
uVar3 = in6addr2str(pbVar10,0);
uVar4 = in6addr2str(pbVar10 + 0x10,0);
dprintf(7,"create_pool","name=%s, range=%s->%s",pcVar9,uVar3,uVar4);
iVar6 = 0;
pbVar7 = pbVar10;
do {
bVar2 = *pbVar7;
pbVar1 = pbVar7 + 0x10;
iVar6 = iVar6 + 1;
pbVar7 = pbVar7 + 1;
if (bVar2 != *pbVar1) {
if (*pbVar1 < bVar2) {
uVar3 = in6addr2str(pbVar10,0);
uVar8 = in6addr2str(pbVar10 + 0x10,0);
dprintf(3,"create_pool","invalid address range %s->%s",uVar3,uVar8,uVar4);
pcVar9 = (char *)param_1[1];
goto LAB_00412604;
}
break;
}
} while (iVar6 != 0x10);
__ptr = (undefined4 *)malloc(0x28) //possible issue identified - semgrep
if (__ptr == (undefined4 *)0x0) {
dprintf(3,"create_pool","memory allocation failed");
pcVar9 = (char *)param_1[1];
goto LAB_00412604;
}
pcVar9 = strdup(pcVar9);
__ptr[1] = pcVar9;
if (pcVar9 == (char *)0x0) {
dprintf(3,"create_pool","memory allocation failed");
free(__ptr);
pcVar9 = (char *)param_1[1];
goto LAB_00412604;
}
uVar3 = *(undefined4 *)(pbVar10 + 4);
uVar4 = *(undefined4 *)(pbVar10 + 8);
uVar8 = *(undefined4 *)(pbVar10 + 0xc);
__ptr[2] = *(undefined4 *)pbVar10;
__ptr[3] = uVar3;
__ptr[4] = uVar4;
__ptr[5] = uVar8;
uVar8 = *(undefined4 *)(pbVar10 + 0x1c);
uVar3 = *(undefined4 *)(pbVar10 + 0x14);
uVar4 = *(undefined4 *)(pbVar10 + 0x18);
__ptr[6] = *(undefined4 *)(pbVar10 + 0x10);
__ptr[7] = uVar3;
__ptr[8] = uVar4;
__ptr[9] = uVar8;
param_1 = (int *)*param_1;
*__ptr = DAT_0043cd9c;
DAT_0043cd9c = __ptr;
} while (param_1 != (int *)0x0);
}
return 0;
}