uint RTMPAPSetInformation(int *param_1,uint *param_2,uint param_3)
{
char cVar1;
short sVar2;
code *pcVar3;
char *pcVar4;
size_t sVar5;
uint uVar6;
char *pcVar7;
uint uVar8;
int iVar9;
int *unaff_gp;
uint local_50;
uint local_4c;
char *local_48;
undefined1 local_44;
undefined1 local_43;
undefined1 local_42;
undefined1 local_41;
undefined1 local_40;
undefined1 local_3f;
uint local_3c;
undefined1 auStack_38 [32];
local_4c = 10;
uVar6 = param_3 & 0x7fff;
iVar9 = *param_1;
if (uVar6 == 0x511) {
uVar6 = 0xffffffea;
if ((short)param_2[1] == 4) {
uVar8 = *param_2;
uVar6 = 4;
if (((uVar8 + 4 | uVar8) & unaff_gp[6]) == 0) {
uVar6 = 4;
__copy_user(&local_4c,uVar8,4);
}
if (10 < local_4c) {
return 0xffffffea;
}
if (param_1[*(int *)(iVar9 + 0xfc) * 0x450 + 0x1477] != local_4c) {
*(undefined1 *)(param_1 + 0x1da48) = 1;
}
param_1[*(int *)(iVar9 + 0xfc) * 0x450 + 0x1477] = local_4c;
*(undefined1 *)((int)param_1 + *(int *)(iVar9 + 0xfc) * 0x1140 + 0x52d7) = 2;
if (2 < RTDebugLevel) {
printk("Set::OID_802_11_AUTHENTICATION_MODE (=%d) \n",param_1[0x1477]);
}
}
APStop(param_1);
APStartUp(param_1);
return uVar6;
}
if (0x511 < uVar6) {
if (uVar6 == 0x542) {
pcVar3 = RTMPIoctlRadiusData;
}
else if (uVar6 < 0x543) {
if (uVar6 == 0x526) {
if (RTDebugLevel < 3) {
sVar2 = (short)param_2[1] //possible issue identified - semgrep
}
else {
printk("Set::OID_802_11_DEAUTHENTICATION\n");
sVar2 = (short)param_2[1] //possible issue identified - semgrep
}
if (sVar2 == 8) {
os_alloc_mem(param_1,&local_48,0x668);
pcVar7 = local_48;
if (local_48 != (char *)0x0) {
uVar8 = (uint)(ushort)param_2[1];
uVar6 = *param_2;
if (((uVar8 + uVar6 | uVar6 | uVar8) & unaff_gp[6]) == 0) {
__copy_user(local_48,uVar6,uVar8);
}
iVar9 = MacTableLookup(param_1,pcVar7);
if (iVar9 != 0) {
local_48[0x65d] = (char)*(undefined2 *)(iVar9 + 0x27e);
MlmeEnqueue(param_1,0xc,0,8,local_48,0);
if (2 < RTDebugLevel) {
printk("Set::OID_802_11_DEAUTHENTICATION (Reason=%d)\n",*(undefined2 *)(pcVar7 + 6))
;
}
}
os_free_mem(0,local_48);
return uVar8;
}
return 0xfffffff2;
}
return 0xffffffea;
}
if (uVar6 != 0x541) goto LAB_0008d544;
pcVar3 = RTMPIoctlAddPMKIDCache;
}
else if (uVar6 == 0x544) {
pcVar3 = RTMPIoctlStaticWepCopy;
}
else if (uVar6 < 0x544) {
pcVar3 = RTMPIoctlAddWPAKey;
}
else {
if (uVar6 != 0x545) goto LAB_0008d544;
pcVar3 = RTMPIoctlSetIdleTimeout;
}
(*pcVar3)();
return 0;
}
if (uVar6 == 0x406) {
uVar6 = (uint)(ushort)param_2[1];
if (((uVar6 + *param_2 | *param_2 | uVar6) & unaff_gp[6]) == 0) {
__copy_user(&local_44);
}
if (uVar6 != 0) {
return 0xfffffff2;
}
if (2 < RTDebugLevel) {
printk("RT_SET_DEL_MAC_ENTRY::(%02x:%02x:%02x:%02x:%02x:%02x)\n",local_44,local_43,local_42,
local_41,local_40,local_3f);
}
iVar9 = MacTableLookup(param_1,&local_44);
if (iVar9 != 0) {
MlmeDeAuthAction(param_1,iVar9,8,0);
return 0;
}
}
else {
if (0x406 < uVar6) {
if (uVar6 == 0x509) {
if ((short)param_2[1] != 0x24) {
return 0xffffffea;
}
uVar6 = *param_2;
local_48 = (char *)0x0;
uVar8 = 0x24;
if (((uVar6 + 0x24 | uVar6 | 0x24) & unaff_gp[6]) == 0) {
uVar8 = 0x24;
__copy_user(&local_3c,uVar6,0x24);
}
if (0x20 < local_3c) {
return 0xffffffea;
}
if (local_3c == 0) {
return 0xffffffea;
}
os_alloc_mem(0,&local_48,0x21);
if (local_48 != (char *)0x0) {
memset(local_48,0,0x21) //possible issue identified - semgrep
memmove(local_48,auStack_38,local_3c) //possible issue identified - semgrep
memset((void *)((int)param_1 + *(int *)(iVar9 + 0xfc) * 0x1140 + 0x51b3),0,0x20) //possible issue identified - semgrep
pcVar4 = (char *)((int)param_1 + *(int *)(iVar9 + 0xfc) * 0x1140 + 0x51b3);
pcVar7 = local_48;
do {
cVar1 = *pcVar7;
pcVar7 = pcVar7 + 1;
*pcVar4 = cVar1;
pcVar4 = pcVar4 + 1;
} while (cVar1 != '\0');
iVar9 = *(int *)(iVar9 + 0xfc);
sVar5 = strlen(local_48);
*(char *)((int)param_1 + iVar9 * 0x1140 + 0x51b2) = (char)sVar5;
os_free_mem(0,local_48);
return uVar8;
}
return 0xfffffff4;
}
if (uVar6 == 0x510) {
if ((short)param_2[1] != 4) {
return 0xffffffea;
}
uVar6 = *param_2;
uVar8 = 4;
if (((uVar6 + 4 | uVar6) & unaff_gp[6]) == 0) {
uVar8 = 4;
__copy_user(&local_50,uVar6,4);
}
if (0xb < local_50) {
return 0xffffffea;
}
if (param_1[*(int *)(iVar9 + 0xfc) * 0x450 + 0x1478] != local_50) {
*(undefined1 *)(param_1 + 0x1da48) = 1;
}
param_1[*(int *)(iVar9 + 0xfc) * 0x450 + 0x1478] = local_50;
iVar9 = *(int *)(iVar9 + 0xfc);
if (param_1[iVar9 * 0x450 + 0x1478] == 8) {
param_1[iVar9 * 0x450 + 0x1479] = 4;
}
else {
param_1[iVar9 * 0x450 + 0x1479] = local_50;
}
APStop(param_1);
APStartUp(param_1);
if (2 < RTDebugLevel) {
printk("Set::OID_802_11_WEP_STATUS (=%d)\n",local_50);
return uVar8;
}
return uVar8;
}
LAB_0008d544:
if (2 < RTDebugLevel) {
printk("Set::unknown IOCTL\'s subcmd = 0x%08x\n",param_3);
return 0xffffff86;
}
return 0xffffff86;
}
if (uVar6 == 0x404) {
uVar6 = (uint)(ushort)param_2[1];
if (((uVar6 + *param_2 | *param_2 | uVar6) & unaff_gp[6]) == 0) {
__copy_user(&local_48);
}
if (uVar6 != 0) {
return 0xfffffff2;
}
*(undefined4 *)(iVar9 + 0xf0) = *(undefined4 *)(*unaff_gp + 0x138);
*(char **)(iVar9 + 0xf4) = local_48;
if (2 < RTDebugLevel) {
pcVar7 = "RT_SET_APD_PID::(IappPid=%lu(0x%x))\n";
LAB_0008d0f4:
printk(pcVar7,local_48);
return 0;
}
}
else {
if (uVar6 != 0x405) goto LAB_0008d544;
uVar6 = (uint)(ushort)param_2[1];
if (((uVar6 + *param_2 | *param_2 | uVar6) & unaff_gp[6]) == 0) {
__copy_user(&local_48);
}
if (uVar6 != 0) {
return 0xfffffff2;
}
*(undefined4 *)(iVar9 + 0xe8) = *(undefined4 *)(*unaff_gp + 0x138);
*(char **)(iVar9 + 0xec) = local_48;
if (2 < RTDebugLevel) {
pcVar7 = "RT_SET_APD_PID::(ApdPid=%lu(0x%x))\n";
goto LAB_0008d0f4;
}
}
}
return 0;
}