/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 parse_rtattr(void *param_1,int param_2,ushort *param_3,int param_4)
{
uint uVar1;
memset(param_1,0,(param_2 + 1) * 4) //possible issue identified - semgrep
if (param_4 < 4) {
LAB_0041db80:
if (param_4 == 0) {
return 0;
}
uVar1 = (uint)*param_3;
}
else {
uVar1 = (uint)*param_3;
if ((3 < uVar1) && ((int)uVar1 <= param_4)) {
do {
uVar1 = uVar1 + 3 & 0xfffffffc;
param_4 = param_4 - uVar1;
if ((int)(uint)param_3[1] <= param_2) {
*(ushort **)((int)param_1 + (uint)param_3[1] * 4) = param_3;
}
param_3 = (ushort *)((int)param_3 + uVar1);
if (param_4 < 4) goto LAB_0041db80;
uVar1 = (uint)*param_3;
} while ((3 < uVar1) && ((int)uVar1 <= param_4));
}
}
fprintf(_stderr,"!!!Deficit %d, rta_len=%d\n",param_4,uVar1);
return 0;
}