Skip to content

Commit ce02893

Browse files
cu_cp: add additional checks before using the security context
1 parent 80d3e94 commit ce02893

File tree

4 files changed

+16
-0
lines changed

4 files changed

+16
-0
lines changed

lib/cu_cp/routines/mobility/inter_cu_handover_target_routine.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ void inter_cu_handover_target_routine::operator()(
7676
// Prepare E1AP Bearer Context Setup Request and call E1AP notifier
7777
{
7878
// Get security keys for Bearer Context Setup Request (RRC UE is not created yet)
79+
if (!ue->get_security_manager().is_security_context_initialized()) {
80+
logger.warning("ue={}: \"{}\" failed. Cause: Security context not initialized", request.ue_index, name());
81+
CORO_EARLY_RETURN(generate_handover_resource_allocation_response(false));
82+
}
7983
if (!fill_e1ap_bearer_context_setup_request(ue->get_security_manager().get_up_as_config())) {
8084
logger.warning("ue={}: \"{}\" failed to fill context at CU-UP", request.ue_index, name());
8185
CORO_EARLY_RETURN(generate_handover_resource_allocation_response(false));

lib/cu_cp/routines/mobility/inter_du_handover_routine.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,12 @@ void inter_du_handover_routine::operator()(coro_context<async_task<cu_cp_inter_d
134134
// Inform CU-UP about new DL tunnels.
135135
{
136136
// get securtiy context of target UE
137+
if (!target_ue->get_security_manager().is_security_context_initialized()) {
138+
logger.warning(
139+
"ue={}: \"{}\" failed. Cause: Security context not initialized", target_ue->get_ue_index(), name());
140+
CORO_EARLY_RETURN(response_msg);
141+
}
142+
137143
if (!add_security_context_to_bearer_context_modification(target_ue->get_security_manager().get_up_as_config())) {
138144
logger.warning("ue={}: \"{}\" failed to create UE context at target DU", request.source_ue_index, name());
139145
CORO_AWAIT(ue_removal_handler.handle_ue_removal_request(target_ue_context_setup_request.ue_index));

lib/cu_cp/ue_security_manager/ue_security_manager_impl.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ ue_security_manager::ue_security_manager(const security_manager_config& cfg_) :
1919
}
2020

2121
// up_ue_security_manager
22+
bool ue_security_manager::is_security_context_initialized() const
23+
{
24+
return sec_context.sel_algos.algos_selected;
25+
}
26+
2227
security::sec_as_config ue_security_manager::get_up_as_config() const
2328
{
2429
return sec_context.get_as_config(security::sec_domain::up);

lib/cu_cp/ue_security_manager/ue_security_manager_impl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class ue_security_manager
2323
~ue_security_manager() = default;
2424

2525
// up_ue_security_manager
26+
[[nodiscard]] bool is_security_context_initialized() const;
2627
[[nodiscard]] security::sec_as_config get_up_as_config() const;
2728
[[nodiscard]] security::sec_128_as_config get_up_128_as_config() const;
2829

0 commit comments

Comments
 (0)