int servicecgi_main(void)
{
undefined *__ptr;
char *pcVar1;
int *piVar2;
int iVar3;
void *__ptr_00;
undefined4 uVar4;
char *__format;
int iVar5;
char acStack_118 [260];
memset(acStack_118,0,0x100) //possible issue identified - semgrep
pcVar1 = getenv("REQUEST_METHOD") //possible issue identified - semgrep
if (pcVar1 == (char *)0x0) {
pcVar1 = "No HTTP request";
goto LAB_0040ac78;
}
iVar5 = strcasecmp(pcVar1,"POST");
if (iVar5 == 0) {
uVar4 = 0x400;
LAB_0040ac00:
iVar5 = cgibin_parse_request(FUN_0040aefc,0,uVar4);
if (iVar5 < 0) {
pcVar1 = "Unable to parse HTTP request";
}
else {
iVar5 = sess_ispoweruser();
if (iVar5 != 0) {
iVar3 = FUN_0040aa80("EVENT");
pcVar1 = (char *)FUN_0040aa80("ACTION");
iVar5 = FUN_0040aa80("SERVICE");
if (iVar3 == 0) {
if ((iVar5 != 0) && (pcVar1 != (char *)0x0)) {
iVar3 = strcasecmp(pcVar1,"START");
if (iVar3 == 0) {
pcVar1 = "service %s start > /dev/null";
}
else {
iVar3 = strcasecmp(pcVar1,"STOP");
if (iVar3 == 0) {
pcVar1 = "service %s stop > /dev/null";
}
else {
iVar3 = strcasecmp(pcVar1,"RESTART");
if (iVar3 != 0) {
__format = "Unknown action - \'%s\'";
goto LAB_0040ac30;
}
pcVar1 = "service %s restart > /dev/null";
}
}
goto LAB_0040ad68;
}
}
else {
pcVar1 = "event %s > /dev/null";
iVar5 = iVar3;
LAB_0040ad68:
lxmldbc_system(pcVar1,iVar5) //possible issue identified - semgrep
}
memset(acStack_118,0,0x100) //possible issue identified - semgrep
iVar5 = 0;
goto LAB_0040adac;
}
pcVar1 = "Not authorized";
}
LAB_0040ac78:
snprintf(acStack_118,0x100,pcVar1) //possible issue identified - semgrep
}
else {
iVar5 = strcasecmp(pcVar1,"GET");
if (iVar5 == 0) {
uVar4 = 0x40;
goto LAB_0040ac00;
}
__format = "Unsupport HTTP request - %s";
LAB_0040ac30:
snprintf(acStack_118,0x100,__format,pcVar1) //possible issue identified - semgrep
}
iVar5 = -1;
LAB_0040adac:
puts("HTTP/1.1 200 OK\r\nContent-Type: text/xml\r\n\r");
puts("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
puts("<report>");
if (iVar5 == 0) {
pcVar1 = "OK";
}
else {
pcVar1 = "FAILED";
}
printf("\t<result>%s</result>\n",pcVar1);
printf("\t<essage>%s</message>\n",acStack_118);
puts("</report>");
cgibin_clean_tempfiles();
while (__ptr = PTR_LOOP_00430450, (undefined **)PTR_LOOP_00430450 != &PTR_LOOP_00430450) {
piVar2 = *(int **)(PTR_LOOP_00430450 + 4);
iVar3 = *(int *)PTR_LOOP_00430450;
__ptr_00 = *(void **)(PTR_LOOP_00430450 + 8);
*piVar2 = iVar3;
*(int **)(iVar3 + 4) = piVar2;
*(undefined4 *)__ptr = 0;
*(undefined4 *)(__ptr + 4) = 0;
if (__ptr_00 != (void *)0x0) {
free(__ptr_00);
}
if (*(void **)(__ptr + 0xc) != (void *)0x0) {
free(*(void **)(__ptr + 0xc));
}
free(__ptr);
}
return iVar5;
}