/* WARNING: Removing unreachable block (ram,0x00406f64) */
/* WARNING: Removing unreachable block (ram,0x00406fb0) */
/* WARNING: Removing unreachable block (ram,0x00406fcc) */
/* WARNING: Removing unreachable block (ram,0x00406fec) */
/* WARNING: Removing unreachable block (ram,0x00406ff4) */
/* WARNING: Removing unreachable block (ram,0x00407088) */
/* WARNING: Removing unreachable block (ram,0x004070a0) */
/* WARNING: Removing unreachable block (ram,0x00407064) */
/* WARNING: Removing unreachable block (ram,0x00406d88) */
/* WARNING: Removing unreachable block (ram,0x00406dac) */
/* WARNING: Removing unreachable block (ram,0x00406dc8) */
/* WARNING: Removing unreachable block (ram,0x00406de8) */
/* WARNING: Removing unreachable block (ram,0x00406e28) */
/* WARNING: Removing unreachable block (ram,0x00406e1c) */
/* WARNING: Removing unreachable block (ram,0x00406e2c) */
/* WARNING: Removing unreachable block (ram,0x00406ec0) */
/* WARNING: Removing unreachable block (ram,0x00406e84) */
/* WARNING: Removing unreachable block (ram,0x00406ed8) */
/* WARNING: Removing unreachable block (ram,0x00406ef4) */
/* WARNING: Removing unreachable block (ram,0x00406f08) */
/* WARNING: Removing unreachable block (ram,0x00406f10) */
int seamacgi_main(void)
{
undefined *__ptr;
char *pcVar1;
int iVar2;
char *pcVar3;
int iVar4;
FILE *pFVar5;
int iVar6;
undefined4 uVar7;
int iVar8;
undefined4 uVar9;
undefined4 uVar10;
int *piVar11;
void *pvVar12;
char *__s;
code *pcVar13;
bool bVar14;
char acStack_1b0 [384];
int iStack_30;
pcVar1 = (char *)sobj_new();
iVar2 = sobj_new();
if (((pcVar1 == (char *)0x0) || (iVar2 == 0)) ||
(pcVar3 = getenv("REQUEST_METHOD"), pcVar3 == (char *)0x0)) { //possible issue identified - semgrep
iVar4 = -1;
goto LAB_004070d8;
}
iVar4 = strcasecmp(pcVar3,"POST");
if (iVar4 != 0) {
cgibin_print_http_status(400,"unsupported HTTP request","unsupported HTTP request");
iVar4 = -1;
goto LAB_004070d8;
}
iVar4 = cgibin_parse_request(&LAB_00407228,0,0x100000);
if (-1 < iVar4) {
pcVar3 = (char *)FUN_00405b10("REPORT_METHOD");
bVar14 = true;
if (pcVar3 != (char *)0x0) {
iVar6 = strcasecmp(pcVar3,"xml");
bVar14 = iVar6 != 0;
}
iVar6 = FUN_00405b10("REPORT");
if (iVar6 == 0) {
pcVar3 = getenv("HTTP_REFERER") //possible issue identified - semgrep
pcVar13 = strdup;
}
else {
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
iVar8 = strcasecmp(pcVar3,"80");
if (iVar8 != 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,iVar6);
pcVar13 = sobj_strdup;
pcVar3 = pcVar1;
}
pvVar12 = (void *)(*pcVar13)(pcVar3);
pcVar3 = (char *)FUN_00405b10("DELAY");
iStack_30 = 0;
if (pcVar3 != (char *)0x0) {
iStack_30 = atoi(pcVar3);
}
iVar6 = sess_ispoweruser();
if (iVar6 == 0) {
cgibin_print_http_resp(bVar14,pvVar12,&DAT_0041e01c,"ERR_UNAUTHORIZED_SESSION",0xffffffff,"");
fwupgrade_log(3);
LAB_00406ca4:
iVar4 = -1;
}
else {
uVar7 = sess_validate();
pFVar5 = fopen("/etc/config/image_sign","r") //possible issue identified - semgrep
if (pFVar5 != (FILE *)0x0) {
pcVar3 = fgets(&DAT_00430de0,0x80,pFVar5) //possible issue identified - semgrep
if (pcVar3 == (char *)0x0) {
cgibin_print_http_resp(bVar14,pvVar12,&DAT_0041e01c,"ERR_READ_SIGN_FAIL",0xffffffff,"");
goto LAB_00406ca4;
}
fclose(pFVar5);
cgibin_reatwhite(&DAT_00430de0);
sobj_free(pcVar1);
iVar4 = FUN_00405bb8(pcVar1,0);
FUN_0040667c(iVar2);
if (iVar4 == 0) {
pcVar3 = "SUCCESS";
}
else {
pcVar3 = "FAIL";
}
uVar9 = sobj_get_string(pcVar1);
uVar10 = sobj_get_string(iVar2);
cgibin_print_http_resp(bVar14,pvVar12,pcVar3,uVar9,uVar7,uVar10);
iVar4 = 0;
}
}
if (pvVar12 != (void *)0x0) {
free(pvVar12);
}
goto LAB_004070d8;
}
if (iVar4 == -100) {
pcVar3 = (char *)FUN_00405b10("REPORT");
if (pcVar3 == (char *)0x0) {
pFVar5 = fopen("/htdocs/web/info.php","r") //possible issue identified - semgrep
if (pFVar5 == (FILE *)0x0) {
acStack_1b0[0] = '\0';
acStack_1b0[1] = '\0';
acStack_1b0[2] = '\0';
acStack_1b0[3] = '\0';
acStack_1b0[4] = '\0';
acStack_1b0[5] = '\0';
acStack_1b0[6] = '\0';
acStack_1b0[7] = '\0';
acStack_1b0[8] = '\0';
acStack_1b0[9] = '\0';
acStack_1b0[10] = '\0';
acStack_1b0[0xb] = '\0';
acStack_1b0[0xc] = '\0';
acStack_1b0[0xd] = '\0';
acStack_1b0[0xe] = '\0';
acStack_1b0[0xf] = '\0';
pcVar3 = getenv("CONTENT_LENGTH") //possible issue identified - semgrep
__s = acStack_1b0;
iVar6 = atoi(pcVar3);
sprintf(__s,"%d",iVar6) //possible issue identified - semgrep
pcVar3 = acStack_1b0 + 8;
sprintf(pcVar3,"%d",0x100000) //possible issue identified - semgrep
uVar7 = 0x19d;
goto LAB_004069d0;
}
fclose(pFVar5);
pcVar3 = "info.php";
}
FUN_0040667c(iVar2);
uVar7 = sobj_get_string(iVar2);
cgibin_print_http_resp(1,pcVar3,&DAT_0041e01c,"ERR_REQ_TOO_LONG",0,uVar7);
}
else {
pcVar3 = "unsupported HTTP request";
uVar7 = 400;
__s = "unsupported HTTP request";
LAB_004069d0:
cgibin_print_http_status(uVar7,pcVar3,__s);
}
LAB_004070d8:
if (DAT_00430e60 != 0) {
free((void *)DAT_00430e60);
}
if (pcVar1 != (char *)0x0) {
sobj_del(pcVar1);
}
if (iVar2 != 0) {
sobj_del(iVar2);
}
while (__ptr = PTR_LOOP_00430420, (undefined **)PTR_LOOP_00430420 != &PTR_LOOP_00430420) {
piVar11 = *(int **)(PTR_LOOP_00430420 + 4);
iVar2 = *(int *)PTR_LOOP_00430420;
pvVar12 = *(void **)(PTR_LOOP_00430420 + 8);
*piVar11 = iVar2;
*(int **)(iVar2 + 4) = piVar11;
*(undefined4 *)__ptr = 0;
*(undefined4 *)(__ptr + 4) = 0;
if (pvVar12 != (void *)0x0) {
free(pvVar12);
}
if (*(void **)(__ptr + 0xc) != (void *)0x0) {
free(*(void **)(__ptr + 0xc));
}
free(__ptr);
}
cgibin_clean_tempfiles();
return iVar4;
}