/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 FUN_004036b8(int param_1,int param_2)
{
undefined *__path;
int iVar1;
__pid_t _Var2;
undefined4 uVar3;
char *pcVar4;
undefined4 local_30;
undefined4 local_2c;
undefined4 local_28;
iVar1 = FUN_004035d4();
__path = o_helper;
uVar3 = 0xffffffff;
if (iVar1 == 0) {
if (param_2 == *(int *)(param_1 + 0x10)) {
if (param_2 == 0) {
pcVar4 = "stopped";
}
else {
pcVar4 = "started";
}
fprintf(_stderr,"SERVD: service [%s] is already %s.\n",*(undefined4 *)(param_1 + 8),pcVar4);
uVar3 = 0;
}
else {
_Var2 = fork() //possible issue identified - semgrep
if (_Var2 != -1) {
if (_Var2 == 0) {
local_30 = FUN_004033cc(&DAT_0040a910,"PATH=/bin:/usr/bin:/sbin:/usr/sbin");
local_2c = FUN_004033cc(&DAT_0040a93c,"HOME=/");
local_28 = 0;
if (param_2 == 0) {
pcVar4 = " service XXX stop";
}
else {
pcVar4 = " service XXX start";
}
execle(__path,__path,"service",*(undefined4 *)(param_1 + 8),pcVar4 + 0x10,0,&local_30) //possible issue identified - semgrep
/* WARNING: Subroutine does not return */
exit(0);
}
if (param_2 == 0) {
pcVar4 = " service XXX stop";
}
else {
pcVar4 = " service XXX start";
}
log_spawn(_Var2,"service %s %s",*(undefined4 *)(param_1 + 8),pcVar4 + 0x10) //possible issue identified - semgrep
DAT_0041b360 = param_1;
*(__pid_t *)(param_1 + 0x14) = _Var2;
if (-1 < _Var2) {
*(int *)(param_1 + 0x10) = param_2;
return 0;
}
}
if (param_2 == 0) {
pcVar4 = " service XXX stop";
}
else {
pcVar4 = " service XXX start";
}
fprintf(_stderr,"SERVD: unable to %s service [%s].\n",pcVar4 + 0x10,
*(undefined4 *)(param_1 + 8));
uVar3 = 0xffffffff;
}
}
return uVar3;
}