Fix CAM permissions

This commit is contained in:
emanuel 2021-04-08 16:38:33 +01:00
parent 477206d065
commit c65f7ca77c
1 changed files with 7 additions and 4 deletions

View File

@ -35,7 +35,7 @@ const cid_ssp_bm_t CID_SSP_BM_MAP[] = {
{"dangerousGoods/dangerousGoodsContainer", CID_DANGEROUS_GOODS, 0x1000},
{"roadwork/roadWorksContainerBasic", CID_ROADWORK, 0x0800},
{"rescue/rescueContainer", CID_RESCUE, 0x0400},
{"emergency/emergencyContaine", CID_EMERGENCY, 0x0200},
{"emergency/emergencyContainer", CID_EMERGENCY, 0x0200},
{"safetyCar/safetyCarContainer", CID_SAFETY_CAR, 0x0100},
{"closedLanes/RoadworksContainerBasic", CID_CLOSED_LANES, 0x0080},
{"requestForRightOfWay/EmergencyContainer: EmergencyPriority", CID_REQUEST_FOR_RIGHT_OF_WAY, 0x0040},
@ -62,12 +62,14 @@ static int permissions_check(int cid, uint8_t* permissions, uint8_t permissions_
return 0;
}
uint32_t perms_int = (*((uint32_t*) permissions)) >> 16;
uint16_t perms_int = *(uint16_t*)(permissions+1);
uint32_t perm_val;
uint16_t perm_val;
for (int i = 0; i < 16; ++i) {
if (cid == CID_SSP_BM_MAP[i].cid) {
perm_val = CID_SSP_BM_MAP[i].bitmap_val;
perm_val = (perm_val>>8) | (perm_val<<8);
break;
}
}
@ -396,7 +398,8 @@ int check_cam(void* fc, BTPDataIndication_t *bdi, CAM_t* cam, uint8_t* ssp, uint
// Check permissions
if (ssp) {
if (cam->cam.camParameters.highFrequencyContainer.choice.rsuContainerHighFrequency.protectedCommunicationZonesRSU) {
if (cam->cam.camParameters.highFrequencyContainer.present == HighFrequencyContainer_PR_rsuContainerHighFrequency &&
cam->cam.camParameters.highFrequencyContainer.choice.rsuContainerHighFrequency.protectedCommunicationZonesRSU) {
if (!permissions_check(CID_PROTECTED_ZONES, ssp, ssp_len)) {rv = 1; return rv;}
}
if (cam->cam.camParameters.specialVehicleContainer) {