/* WARNING: Removing unreachable block (ram,0x0040ecfc) */
/* WARNING: Heritage AFTER dead removal. Example location: r0x0043e994 : 0x0040eb08 */
/* WARNING: Restarted to delay deadcode elimination for space: ram */
undefined4 configure_authinfo(int *param_1)
{
undefined4 *puVar1;
int iVar2;
char *pcVar3;
int *piVar4;
if (param_1 != (int *)0x0) {
do {
puVar1 = (undefined4 *)malloc(0x14) //possible issue identified - semgrep
if (puVar1 == (undefined4 *)0x0) {
iVar2 = param_1[1];
pcVar3 = "memory allocation failed for auth info %s";
LAB_0040ed34:
dprintf(3,"configure_authinfo",pcVar3,iVar2);
return 0xffffffff;
}
puVar1[1] = 0;
pcVar3 = (char *)param_1[1];
*puVar1 = DAT_00441060;
puVar1[2] = 0xffffffff;
DAT_00441060 = puVar1;
puVar1[3] = 0xffffffff;
puVar1[4] = 0xffffffff;
pcVar3 = strdup(pcVar3);
puVar1[1] = pcVar3;
if (pcVar3 == (char *)0x0) {
iVar2 = param_1[1];
pcVar3 = "failed to copy auth info name: %s";
goto LAB_0040ed34;
}
for (piVar4 = (int *)param_1[3]; piVar4 != (int *)0x0; piVar4 = (int *)*piVar4) {
iVar2 = piVar4[2];
if (iVar2 == 0x27) {
if (puVar1[3] == -1) {
puVar1[3] = piVar4[4];
}
else {
dprintf(4,"configure_authinfo","%s:%d duplicate algorithm for auth info %s (ignored)",
configfilename,piVar4[3],param_1[1]);
}
}
else if (iVar2 < 0x28) {
if (iVar2 != 0x26) {
LAB_0040eaf4:
dprintf(3,"configure_authinfo","%s:%d invalid auth info parameter for %s",configfilename
,piVar4[3],param_1[1]);
return 0xffffffff;
}
if (puVar1[2] == -1) {
puVar1[2] = piVar4[4];
}
else {
dprintf(4,"configure_authinfo","%s:%d duplicate protocol for auth info %s (ignored)",
configfilename,piVar4[3],param_1[1]);
}
}
else if (iVar2 == 0x28) {
if (puVar1[4] == -1) {
puVar1[4] = piVar4[4];
}
else {
dprintf(4,"configure_authinfo","%s:%d duplicate RDM for auth info %s (ignored)",
configfilename,piVar4[3],param_1[1]);
}
}
else {
if (iVar2 != 0x29) goto LAB_0040eaf4;
dprintf(4,"configure_authinfo","%s:%d auth info specific keys are not supported",
configfilename,piVar4[3]);
}
}
iVar2 = puVar1[2];
if (iVar2 != 2) {
if (iVar2 == 3) {
dprintf(3,"configure_authinfo","server-only auth protocol is specified");
return 0xffffffff;
}
if (iVar2 == -1) {
iVar2 = param_1[1];
pcVar3 = "auth protocol is not specified for %s";
goto LAB_0040ed34;
}
}
if (puVar1[3] == -1) {
puVar1[3] = 1;
}
if (puVar1[4] == -1) {
puVar1[4] = 0;
}
param_1 = (int *)*param_1;
} while (param_1 != (int *)0x0);
}
return 0;
}