undefined4 sessioncgi_main(void)
{
char *pcVar1;
int iVar2;
char *pcVar3;
int iVar4;
void *__ptr;
undefined4 uVar5;
undefined4 uVar6;
undefined4 uVar7;
uint uVar8;
code *pcVar9;
char *pcVar10;
undefined4 uVar11;
undefined4 uVar12;
undefined **ppuVar13;
undefined **ppuVar14;
uint uVar15;
pcVar1 = getenv("REQUEST_METHOD") //possible issue identified - semgrep
if (pcVar1 == (char *)0x0) {
pcVar1 = "no REQUEST";
LAB_00409764:
cgibin_print_http_status(400,"",pcVar1);
uVar12 = 0xffffffff;
goto LAB_00409cd8;
}
iVar2 = strcasecmp(pcVar1,"GET");
if (iVar2 == 0) {
pcVar9 = FUN_00409504;
uVar12 = 0x40;
}
else {
iVar2 = strcasecmp(pcVar1,"POST");
if (iVar2 != 0) {
pcVar1 = "unsupported HTTP request";
goto LAB_00409764;
}
pcVar9 = FUN_00409450;
uVar12 = 0x400;
}
cgibin_parse_request(pcVar9,0,uVar12);
pcVar1 = (char *)sobj_new();
if (pcVar1 == (char *)0x0) {
uVar12 = 0xffffffff;
goto LAB_00409cd8;
}
pcVar3 = (char *)FUN_004095a8("REPORT_METHOD");
if (pcVar3 == (char *)0x0) {
LAB_004097a4:
iVar2 = FUN_004095a8("REPORT");
if (iVar2 != 0) {
sobj_add_string(pcVar1,"http://");
pcVar3 = getenv("HTTP_HOST") //possible issue identified - semgrep
sobj_add_string(pcVar1,pcVar3);
pcVar3 = getenv("SERVER_PORT") //possible issue identified - semgrep
iVar4 = strcasecmp(pcVar3,"80");
if (iVar4 != 0) {
sobj_add_char(pcVar1,0x3a);
pcVar3 = getenv("SERVER_PORT") //possible issue identified - semgrep
sobj_add_string(pcVar1,pcVar3);
}
sobj_add_char(pcVar1,0x2f);
sobj_add_string(pcVar1,iVar2);
pcVar9 = sobj_strdup;
pcVar3 = pcVar1;
LAB_004098fc:
uVar12 = 1;
__ptr = (void *)(*pcVar9)(pcVar3);
goto LAB_00409950;
}
pcVar3 = getenv("HTTP_REFERER") //possible issue identified - semgrep
if (pcVar3 != (char *)0x0) {
pcVar3 = getenv("HTTP_REFERER") //possible issue identified - semgrep
pcVar9 = strdup;
goto LAB_004098fc;
}
cgibin_print_http_resp(1,0,&DAT_0041e01c,"ERR_NO_REPORT",0xffffffff,"");
uVar12 = 0xffffffff;
__ptr = (void *)0x0;
}
else {
iVar2 = strcasecmp(pcVar3,"xml");
uVar12 = 0;
if (iVar2 != 0) goto LAB_004097a4;
__ptr = (void *)0x0;
LAB_00409950:
pcVar3 = (char *)FUN_004095a8("ACTION");
if (pcVar3 == (char *)0x0) {
pcVar3 = "";
pcVar10 = "ERR_NO_ACTION";
LAB_00409bfc:
cgibin_print_http_resp(uVar12,__ptr,&DAT_0041e01c,pcVar10,0xffffffff,pcVar3);
uVar12 = 0xffffffff;
}
else {
sobj_free(pcVar1);
ppuVar13 = (undefined **)0x0;
while( true ) {
ppuVar14 = (undefined **)PTR_LOOP_00430430;
if (ppuVar13 != (undefined **)0x0) {
ppuVar14 = (undefined **)*ppuVar13;
}
if ((ppuVar14 == &PTR_LOOP_00430430) || (ppuVar14 == (undefined **)0x0)) break;
iVar2 = strncmp(ppuVar14[2],"PELOTA_",7);
ppuVar13 = ppuVar14;
if (iVar2 == 0) {
sobj_add_string(pcVar1,"&");
sobj_add_string(pcVar1,ppuVar14[2]);
sobj_add_string(pcVar1,"=");
sobj_add_string(pcVar1,ppuVar14[3]);
}
}
iVar2 = strcmp(pcVar3,"login_plaintext");
if (iVar2 == 0) {
uVar5 = FUN_004095a8(&DAT_0041e810);
uVar6 = FUN_004095a8("PASSWD");
uVar7 = FUN_004095a8("CAPTCHA");
uVar11 = 0;
LAB_00409b38:
uVar8 = authentication(uVar5,uVar6,uVar7,uVar11);
uVar15 = uVar8 & -(uint)((int)uVar8 < 1);
}
else {
iVar2 = strcmp(pcVar3,"login_digest");
if (iVar2 == 0) {
uVar5 = FUN_004095a8(&DAT_0041e810);
uVar6 = FUN_004095a8("PASSWD");
uVar7 = FUN_004095a8("CAPTCHA");
uVar11 = 1;
goto LAB_00409b38;
}
iVar2 = strcmp(pcVar3,"logout");
if (iVar2 != 0) {
pcVar3 = (char *)sobj_get_string(pcVar1);
pcVar10 = "ERR_UNKNOW_ACTION";
goto LAB_00409bfc;
}
pcVar10 = getenv("REMOTE_ADDR") //possible issue identified - semgrep
weblogin_log(0xfffffffb,pcVar10);
uVar15 = 0;
uVar8 = 0xffffffff;
sess_logout();
}
iVar2 = strcmp(pcVar3,"logout");
if (iVar2 != 0) {
pcVar3 = getenv("REMOTE_ADDR") //possible issue identified - semgrep
weblogin_log(uVar8,pcVar3);
}
uVar5 = authentication_result(uVar15);
uVar6 = sobj_get_string(pcVar1);
if ((int)uVar8 < 0) {
uVar8 = 0xffffffff;
}
cgibin_print_http_resp(uVar12,__ptr,uVar5,"",uVar8,uVar6);
uVar12 = 0;
}
}
sobj_del(pcVar1);
if (__ptr != (void *)0x0) {
free(__ptr);
}
LAB_00409cd8:
FUN_00409200();
return uVar12;
}