Bugfix when deleting a SDAP entity that is not the first one on the list and prevents segfault when removing the last one on the list
Fix delete entity function, a SDAP entity is a combination of a UE and PDUSession, we cannot just simply delete the first entity for a UE
This commit is contained in:
@@ -468,23 +468,21 @@ nr_sdap_entity_t *nr_sdap_get_entity(ue_id_t ue_id, int pdusession_id)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void delete_nr_sdap_entity(ue_id_t ue_id)
|
int nr_sdap_delete_entity(ue_id_t ue_id, int pdusession_id)
|
||||||
{
|
{
|
||||||
nr_sdap_entity_t *entityPtr, *entityPrev = NULL;
|
nr_sdap_entity_t *entityPtr = sdap_info.sdap_entity_llist;
|
||||||
entityPtr = sdap_info.sdap_entity_llist;
|
int pos = 0;
|
||||||
|
while (entityPtr != NULL) {
|
||||||
if (entityPtr->ue_id == ue_id) {
|
if (entityPtr->ue_id == ue_id && entityPtr->pdusession_id == pdusession_id) {
|
||||||
sdap_info.sdap_entity_llist = sdap_info.sdap_entity_llist->next_entity;
|
if (pos == 0) {
|
||||||
free(entityPtr);
|
sdap_info.sdap_entity_llist = sdap_info.sdap_entity_llist->next_entity;
|
||||||
} else {
|
}
|
||||||
while (entityPtr->ue_id != ue_id && entityPtr->next_entity != NULL) {
|
LOG_I(SDAP, "Deleting SDAP entity for UE %lx and PDU Session id %d\n", ue_id, entityPtr->pdusession_id);
|
||||||
entityPrev = entityPtr;
|
|
||||||
entityPtr = entityPtr->next_entity;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (entityPtr->ue_id != ue_id) {
|
|
||||||
entityPrev->next_entity = entityPtr->next_entity;
|
|
||||||
free(entityPtr);
|
free(entityPtr);
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
entityPtr = entityPtr->next_entity;
|
||||||
|
pos++;
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user