undefined4 qrec_process(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4)
{
ushort uVar1;
ushort uVar2;
char *__dest;
size_t sVar3;
uint uVar4;
byte *pbVar5;
byte *__src;
undefined4 *puVar6;
undefined4 uVar7;
char *__s;
int iVar8;
int iVar9;
size_t sVar10;
byte *pbVar11;
int iVar12;
pbVar11 = (byte *)(param_4 + 0xc);
iVar9 = 0;
pbVar5 = pbVar11;
while( true ) {
uVar4 = (uint)*pbVar5;
pbVar5 = pbVar5 + uVar4 + 1;
if (uVar4 == 0) break;
iVar9 = iVar9 + uVar4 + (uint)(*pbVar5 != 0);
}
sVar10 = iVar9 + 1 //possible issue identified - semgrep
__dest = (char *)malloc(sVar10) //possible issue identified - semgrep
memset(__dest,0,sVar10);
memset(__dest,0,sVar10);
iVar8 = 0;
pbVar5 = pbVar11;
do {
sVar3 = (size_t)*pbVar5;
do {
__src = pbVar5 + 1;
pbVar5 = pbVar5 + sVar3 + 1;
if (sVar3 == 0) {
iVar12 = iVar8 + 1;
verbose(">> %s: offset=%u, namestr=\"%s\", namesize=%u, memsize=%u\n","name_process",iVar12,
__dest,iVar9,sVar10);
uVar1 = *(ushort *)(pbVar11 + iVar12);
uVar2 = *(ushort *)(pbVar11 + iVar8 + 3);
verbose(">> %s: received query name=\"%s\" (%u), qtype=%#x, qclass=%#x \n","qrec_process",
__dest,iVar9,(uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8),
(uVar2 & 0xff) << 8 | (uint)(uVar2 >> 8));
verbose(
">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"
);
puVar6 = &o_name;
sVar10 = strlen(__dest);
goto LAB_004032b8;
}
iVar8 = iVar8 + sVar3 + 1 //possible issue identified - semgrep
strncat(__dest,(char *)__src,sVar3) //possible issue identified - semgrep
sVar3 = (size_t)*pbVar5;
} while (sVar3 == 0);
strcat(__dest,".") //possible issue identified - semgrep
} while( true );
LAB_004032b8:
do {
__s = (char *)*puVar6;
sVar3 = strlen(__s);
puVar6 = puVar6 + 1;
if (sVar10 == sVar3) {
iVar9 = strncmp(__s,__dest,sVar10) //possible issue identified - semgrep
if (iVar9 == 0) {
uVar1 = *(ushort *)(pbVar11 + iVar8 + 3);
uVar7 = 0xffffffff;
if ((((uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8)) == 1) &&
(((uVar1 = *(ushort *)(pbVar11 + iVar12),
uVar4 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8), uVar4 == 1 || (uVar4 == 0x1c)) ||
(uVar4 == 0xff)))) {
FUN_00402594(param_1,param_2,param_3,param_4,iVar12,uVar4);
verbose("\n");
uVar7 = 0;
}
goto LAB_00403398;
}
}
} while (puVar6 != (undefined4 *)&_end);
uVar7 = 0xffffffff;
LAB_00403398:
if (__dest != (char *)0x0) {
free(__dest);
}
return uVar7;
}