/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 * susock_server_open(char *param_1,uint param_2,undefined4 param_3)
{
bool bVar1;
int iVar2;
int *piVar3;
int iVar4;
undefined4 *puVar5;
void *pvVar6;
undefined4 *puVar7;
uint uVar8;
FILE *pFVar9;
char *pcVar10;
sockaddr local_120 [7];
stat sStack_b0;
if (param_1 == (char *)0x0) {
return (undefined4 *)0x0;
}
iVar2 = stat(param_1,&sStack_b0) //possible issue identified - semgrep
if (iVar2 < 0) {
iVar2 = socket(1,2,0);
pFVar9 = _stderr;
if (-1 < iVar2) {
local_120[0].sa_family = 1;
snprintf(local_120[0].sa_data,0x6c,"%s",param_1) //possible issue identified - semgrep
iVar4 = bind(iVar2,local_120,0x6e);
pFVar9 = _stderr;
if (iVar4 < 0) {
piVar3 = __errno_location();
pcVar10 = strerror(*piVar3);
fprintf(pFVar9,"%s: bind: %s.\n","susock_server_open",pcVar10);
}
else {
puVar5 = (undefined4 *)malloc(0x14) //possible issue identified - semgrep
if (puVar5 == (undefined4 *)0x0) {
fprintf(_stderr,"%s: malloc error.\n","susock_server_open");
}
else {
*puVar5 = 0x5c50c3e7;
puVar5[4] = param_3;
puVar5[1] = 0;
puVar5[3] = 0;
puVar5[2] = param_2;
pvVar6 = malloc(param_2 * 0xc) //possible issue identified - semgrep
puVar5[3] = pvVar6;
if (pvVar6 != (void *)0x0) {
chmod(local_120[0].sa_data,0x1ff) //possible issue identified - semgrep
listen(iVar2,param_2);
puVar5[1] = iVar2;
uVar8 = 0;
while( true ) {
iVar2 = uVar8 * 0xc;
bVar1 = param_2 <= uVar8;
uVar8 = uVar8 + 1;
if (bVar1) break;
puVar7 = (undefined4 *)(puVar5[3] + iVar2);
puVar7[1] = 0xffffffff;
*puVar7 = 0x5c5c71e7;
}
return puVar5;
}
fprintf(_stderr,"%s: malloc error!\n","susock_server_open");
susock_close(puVar5);
}
}
close(iVar2);
return (undefined4 *)0x0;
}
piVar3 = __errno_location();
param_1 = strerror(*piVar3);
pcVar10 = "%s: socket: %s.\n";
}
else {
pcVar10 = "%s: \'%s\' is already exist!\n";
pFVar9 = _stderr;
}
fprintf(pFVar9,pcVar10,"susock_server_open",param_1);
return (undefined4 *)0x0;
}