Originally reported by XIAOTIAN ZHOU on 2026-05-09 — GitLab #1090
Hi, similar to #1078 and #1089, we found another batch of inputs that could cause the DU to crash. These are listed below:
- Certain inputs can cause
AssertFatal(du_cell->nr_cellid == cu_cell->nr_cellid, "CellID mismatch: DU %ld vs CU %ld\n", du_cell->nr_cellid, cu_cell->nr_cellid); in f1_setup_response in openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c.
Example input: 400100210000030003000f00000004000900226377cc867d51e000aa000120004e000200de or
<F1AP-PDU>
<successfulOutcome>
<procedureCode>1</procedureCode>
<criticality>
<reject/>
</criticality>
<value>
<F1SetupResponse>
<protocolIEs>
<ProtocolIE-Field>
<id>3</id>
<criticality>
<reject/>
</criticality>
<value>
<Cells-to-be-Activated-List>
<ProtocolIE-SingleContainer>
<id>4</id>
<criticality>
<reject/>
</criticality>
<value>
<Cells-to-be-Activated-List-Item>
<nRCGI>
<pLMN-Identity>226377</pLMN-Identity>
<nRCellIdentity>110011001000011001111101010100011110</nRCellIdentity>
</nRCGI>
</Cells-to-be-Activated-List-Item>
</value>
</ProtocolIE-SingleContainer>
</Cells-to-be-Activated-List>
</value>
</ProtocolIE-Field>
<ProtocolIE-Field>
<id>170</id>
<criticality>
<reject/>
</criticality>
<value>
<RRC-Version>
<latest-RRC-Version>010</latest-RRC-Version>
</RRC-Version>
</value>
</ProtocolIE-Field>
<ProtocolIE-Field>
<id>78</id>
<criticality>
<reject/>
</criticality>
<value>
<TransactionID>222</TransactionID>
</value>
</ProtocolIE-Field>
</protocolIEs>
</F1SetupResponse>
</value>
</successfulOutcome>
</F1AP-PDU>
- Certain inputs can cause:
AssertFatal(1==0,"received gNB CU CONFIGURATION UPDATE FAILURE with cause %d\n", GNBCUConfigurationUpdateFailure->cause) in DU_send_gNB_CU_CONFIGURATION_UPDATE_FAILURE in openair2/F1AP/f1ap_du_interface_management.c.
Example input: 0004001c0000020003000f00000004000900226377cc867d51e0004e0002008a or
<F1AP-PDU>
<initiatingMessage>
<procedureCode>4</procedureCode>
<criticality>
<reject/>
</criticality>
<value>
<GNBCUConfigurationUpdate>
<protocolIEs>
<ProtocolIE-Field>
<id>3</id>
<criticality>
<reject/>
</criticality>
<value>
<Cells-to-be-Activated-List>
<ProtocolIE-SingleContainer>
<id>4</id>
<criticality>
<reject/>
</criticality>
<value>
<Cells-to-be-Activated-List-Item>
<nRCGI>
<pLMN-Identity>226377</pLMN-Identity>
<nRCellIdentity>110011001000011001111101010100011110</nRCellIdentity>
</nRCGI>
</Cells-to-be-Activated-List-Item>
</value>
</ProtocolIE-SingleContainer>
</Cells-to-be-Activated-List>
</value>
</ProtocolIE-Field>
<ProtocolIE-Field>
<id>78</id>
<criticality>
<reject/>
</criticality>
<value>
<TransactionID>138</TransactionID>
</value>
</ProtocolIE-Field>
</protocolIEs>
</GNBCUConfigurationUpdate>
</value>
</initiatingMessage>
</F1AP-PDU>
- Certain inputs can cause:
AssertFatal(cell_to_activate == 1,"No cells to activate or cells > 1 %d\n",cell_to_activate); in gNB_app_task in openair2/GNB_APP/gnb_app.c.
Example input:
0004001c0000020003000f00000004000900226377cc867d51e0004e0002008a or
<F1AP-PDU>
<initiatingMessage>
<procedureCode>4</procedureCode>
<criticality>
<reject/>
</criticality>
<value>
<GNBCUConfigurationUpdate>
<protocolIEs>
<ProtocolIE-Field>
<id>3</id>
<criticality>
<reject/>
</criticality>
<value>
<Cells-to-be-Activated-List>
<ProtocolIE-SingleContainer>
<id>4</id>
<criticality>
<reject/>
</criticality>
<value>
<Cells-to-be-Activated-List-Item>
<nRCGI>
<pLMN-Identity>226377</pLMN-Identity>
<nRCellIdentity>110011001000011001111101010100011110</nRCellIdentity>
</nRCGI>
</Cells-to-be-Activated-List-Item>
</value>
</ProtocolIE-SingleContainer>
</Cells-to-be-Activated-List>
</value>
</ProtocolIE-Field>
<ProtocolIE-Field>
<id>78</id>
<criticality>
<reject/>
</criticality>
<value>
<TransactionID>138</TransactionID>
</value>
</ProtocolIE-Field>
</protocolIEs>
</GNBCUConfigurationUpdate>
</value>
</initiatingMessage>
</F1AP-PDU>
- Certain input can trigger:
AssertFatal(is_SA ^ (cg_configinfo != NULL), "cannot have SA and CG-ConfigInfo: NR-DC not supported xor need CG-ConfigInfo for NSA/phy-test/do-ra\n"); in ue_context_setup_request in openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c.
Example input:
000500260000040009000440029946006b000108003f0009002427226377cc86f000280005c0130af08a or
<initiatingMessage>
<procedureCode>5</procedureCode>
<criticality>
<reject/>
</criticality>
<value>
<UEContextSetupRequest>
<protocolIEs>
<ProtocolIE-Field>
<id>9</id>
<criticality>
<reject/>
</criticality>
<value>
<CUtoDURRCInformation>
<cG-ConfigInfo>9946</cG-ConfigInfo>
</CUtoDURRCInformation>
</value>
</ProtocolIE-Field>
<ProtocolIE-Field>
<id>107</id>
<criticality>
<reject/>
</criticality>
<value>
<ServCellIndex>2</ServCellIndex>
</value>
</ProtocolIE-Field>
<ProtocolIE-Field>
<id>63</id>
<criticality>
<reject/>
</criticality>
<value>
<NRCGI>
<pLMN-Identity>242722</pLMN-Identity>
<nRCellIdentity>011000110111011111001100100001101111</nRCellIdentity>
</NRCGI>
</value>
</ProtocolIE-Field>
<ProtocolIE-Field>
<id>40</id>
<criticality>
<reject/>
</criticality>
<value>
<GNB-CU-UE-F1AP-ID>319484042</GNB-CU-UE-F1AP-ID>
</value>
</ProtocolIE-Field>
</protocolIEs>
</UEContextSetupRequest>
</value>
</initiatingMessage>
</F1AP-PDU>
- Some inputs can trigger
AssertFatal(rb != NULL, "SDU sent to unknown RB UE-ID %d SRB %d\n", ue_id, channel_id); in nr_rlc_srb_recv_sdu in openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c. Example input:
0005002a000005000900010000320003022427006b000108003f0009006377cc867d51adc000280005c08ad13451 or
<F1AP-PDU>
<initiatingMessage>
<procedureCode>5</procedureCode>
<criticality>
<reject/>
</criticality>
<value>
<UEContextSetupRequest>
<protocolIEs>
<ProtocolIE-Field>
<id>9</id>
<criticality>
<reject/>
</criticality>
<value>
<CUtoDURRCInformation/>
</value>
</ProtocolIE-Field>
<ProtocolIE-Field>
<id>50</id>
<criticality>
<reject/>
</criticality>
<value>
<RRCContainer>2427</RRCContainer>
</value>
</ProtocolIE-Field>
<ProtocolIE-Field>
<id>107</id>
<criticality>
<reject/>
</criticality>
<value>
<ServCellIndex>2</ServCellIndex>
</value>
</ProtocolIE-Field>
<ProtocolIE-Field>
<id>63</id>
<criticality>
<reject/>
</criticality>
<value>
<NRCGI>
<pLMN-Identity>6377CC</pLMN-Identity>
<nRCellIdentity>100001100111110101010001101011011100</nRCellIdentity>
</NRCGI>
</value>
</ProtocolIE-Field>
<ProtocolIE-Field>
<id>40</id>
<criticality>
<reject/>
</criticality>
<value>
<GNB-CU-UE-F1AP-ID>2328966225</GNB-CU-UE-F1AP-ID>
</value>
</ProtocolIE-Field>
</protocolIEs>
</UEContextSetupRequest>
</value>
</initiatingMessage>
</F1AP-PDU>
- Certain message may cause Null Pointer Dereference. In
ue_cap = get_ue_nr_cap(*req->gNB_DU_ue_id, cu2du->ue_cap->buf, cu2du->ue_cap->len); in function ue_context_setup_request, the req->gNB_DU_ue_id might be NULL.
Example input: 0005003b00000501020011010103000c5444800027161201867d51c0000900042002f21e006b000108003f0009000af08ad13451dea000280005c0b23076fd
<F1AP-PDU>
<initiatingMessage>
<procedureCode>5</procedureCode>
<criticality>
<reject/>
</criticality>
<value>
<UEContextSetupRequest>
<protocolIEs>
<ProtocolIE-Field>
<id>258</id>
<criticality>
<reject/>
</criticality>
<value>
<BHChannels-ToBeSetup-List>
<ProtocolIE-SingleContainer>
<id>259</id>
<criticality>
<reject/>
</criticality>
<value>
<BHChannels-ToBeSetup-Item>
<bHRLCChannelID>1010001000100100</bHRLCChannelID>
<bHQoSInformation>
<bHRLCCHQoS>
<qoS-Characteristics>
<non-Dynamic-5QI>
<fiveQI>39</fiveQI>
</non-Dynamic-5QI>
</qoS-Characteristics>
<nGRANallocationRetentionPriority>
<priorityLevel>2</priorityLevel>
<pre-emptionCapability>
<may-trigger-pre-emption/>
</pre-emptionCapability>
<pre-emptionVulnerability>
<pre-emptable/>
</pre-emptionVulnerability>
</nGRANallocationRetentionPriority>
</bHRLCCHQoS>
</bHQoSInformation>
<rLCmode>
<rlc-am/>
</rLCmode>
<trafficMappingInfo>
<bAPlayerBHRLCchannelMappingInfo>
<bAPlayerBHRLCchannelMappingInfoToRemove>
<MappingInformationIndex>10000110011111010101000111</MappingInformationIndex>
</bAPlayerBHRLCchannelMappingInfoToRemove>
</bAPlayerBHRLCchannelMappingInfo>
</trafficMappingInfo>
</BHChannels-ToBeSetup-Item>
</value>
</ProtocolIE-SingleContainer>
</BHChannels-ToBeSetup-List>
</value>
</ProtocolIE-Field>
<ProtocolIE-Field>
<id>9</id>
<criticality>
<reject/>
</criticality>
<value>
<CUtoDURRCInformation>
<uE-CapabilityRAT-ContainerList>F21E</uE-CapabilityRAT-ContainerList>
</CUtoDURRCInformation>
</value>
</ProtocolIE-Field>
<ProtocolIE-Field>
<id>107</id>
<criticality>
<reject/>
</criticality>
<value>
<ServCellIndex>2</ServCellIndex>
</value>
</ProtocolIE-Field>
<ProtocolIE-Field>
<id>63</id>
<criticality>
<reject/>
</criticality>
<value>
<NRCGI>
<pLMN-Identity>0AF08A</pLMN-Identity>
<nRCellIdentity>110100010011010001010001110111101010</nRCellIdentity>
</NRCGI>
</value>
</ProtocolIE-Field>
<ProtocolIE-Field>
<id>40</id>
<criticality>
<reject/>
</criticality>
<value>
<GNB-CU-UE-F1AP-ID>2989520637</GNB-CU-UE-F1AP-ID>
</value>
</ProtocolIE-Field>
</protocolIEs>
</UEContextSetupRequest>
</value>
</initiatingMessage>
</F1AP-PDU>
AssertFatal(1==0,"Unknown reset type\n"); can be triggered in DU_handle_RESET. Example input:
000000170000030000000580a22400000030000100004e00020022 or
<F1AP-PDU>
<initiatingMessage>
<procedureCode>0</procedureCode>
<criticality>
<reject/>
</criticality>
<value>
<Reset>
<protocolIEs>
<ProtocolIE-Field>
<id>0</id>
<criticality>
<reject/>
</criticality>
<value>
<Cause>
<choice-extension>
<id>41508</id>
<criticality>
<reject/>
</criticality>
<value/>
</choice-extension>
</Cause>
</value>
</ProtocolIE-Field>
<ProtocolIE-Field>
<id>48</id>
<criticality>
<reject/>
</criticality>
<value>
<ResetType>
<f1-Interface>
<reset-all/>
</f1-Interface>
</ResetType>
</value>
</ProtocolIE-Field>
<ProtocolIE-Field>
<id>78</id>
<criticality>
<reject/>
</criticality>
<value>
<TransactionID>34</TransactionID>
</value>
</ProtocolIE-Field>
</protocolIEs>
</Reset>
</value>
</initiatingMessage>
</F1AP-PDU>
- Assertion failure due to BIT_STRING size cannot convert to u64 or u32 in functions
BIT_STRING_to_uint64 and BIT_STRING_to_uint32.
Example inputs: 001200250000030071000f00000070000900a22427226377cc70007f0005603f134000007500027820 or
<F1AP-PDU>
<initiatingMessage>
<procedureCode>18</procedureCode>
<criticality>
<reject/>
</criticality>
<value>
<Paging>
<protocolIEs>
<ProtocolIE-Field>
<id>113</id>
<criticality>
<reject/>
</criticality>
<value>
<PagingCell-list>
<ProtocolIE-SingleContainer>
<id>112</id>
<criticality>
<reject/>
</criticality>
<value>
<PagingCell-Item>
<nRCGI>
<pLMN-Identity>A22427</pLMN-Identity>
<nRCellIdentity>001000100110001101110111110011000111</nRCellIdentity>
</nRCGI>
</PagingCell-Item>
</value>
</ProtocolIE-SingleContainer>
</PagingCell-list>
</value>
</ProtocolIE-Field>
<ProtocolIE-Field>
<id>127</id>
<criticality>
<reject/>
</criticality>
<value>
<PagingIdentity>
<cNUEPagingIdentity>
<choice-extension>
<id>16147</id>
<criticality>
<ignore/>
</criticality>
<value/>
</choice-extension>
</cNUEPagingIdentity>
</PagingIdentity>
</value>
</ProtocolIE-Field>
<ProtocolIE-Field>
<id>117</id>
<criticality>
<reject/>
</criticality>
<value>
<UEIdentityIndexValue>
<indexLength10>1111000001</indexLength10>
</UEIdentityIndexValue>
</value>
</ProtocolIE-Field>
</protocolIEs>
</Paging>
</value>
</initiatingMessage>
</F1AP-PDU>
- Function
f1_setup_failure in openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c would exit(1) on any F1SetupFailure from CU.
Hi, similar to #1078 and #1089, we found another batch of inputs that could cause the DU to crash. These are listed below:
AssertFatal(du_cell->nr_cellid == cu_cell->nr_cellid, "CellID mismatch: DU %ld vs CU %ld\n", du_cell->nr_cellid, cu_cell->nr_cellid);inf1_setup_responseinopenair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c.Example input:
400100210000030003000f00000004000900226377cc867d51e000aa000120004e000200deorAssertFatal(1==0,"received gNB CU CONFIGURATION UPDATE FAILURE with cause %d\n", GNBCUConfigurationUpdateFailure->cause)inDU_send_gNB_CU_CONFIGURATION_UPDATE_FAILUREinopenair2/F1AP/f1ap_du_interface_management.c.Example input:
0004001c0000020003000f00000004000900226377cc867d51e0004e0002008aorAssertFatal(cell_to_activate == 1,"No cells to activate or cells > 1 %d\n",cell_to_activate);ingNB_app_taskinopenair2/GNB_APP/gnb_app.c.Example input:
0004001c0000020003000f00000004000900226377cc867d51e0004e0002008aorAssertFatal(is_SA ^ (cg_configinfo != NULL), "cannot have SA and CG-ConfigInfo: NR-DC not supported xor need CG-ConfigInfo for NSA/phy-test/do-ra\n");inue_context_setup_requestinopenair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c.Example input:
000500260000040009000440029946006b000108003f0009002427226377cc86f000280005c0130af08aorAssertFatal(rb != NULL, "SDU sent to unknown RB UE-ID %d SRB %d\n", ue_id, channel_id);innr_rlc_srb_recv_sduinopenair2/LAYER2/nr_rlc/nr_rlc_oai_api.c. Example input:0005002a000005000900010000320003022427006b000108003f0009006377cc867d51adc000280005c08ad13451orue_cap = get_ue_nr_cap(*req->gNB_DU_ue_id, cu2du->ue_cap->buf, cu2du->ue_cap->len);in function ue_context_setup_request, thereq->gNB_DU_ue_idmight be NULL.Example input:
0005003b00000501020011010103000c5444800027161201867d51c0000900042002f21e006b000108003f0009000af08ad13451dea000280005c0b23076fdAssertFatal(1==0,"Unknown reset type\n");can be triggered inDU_handle_RESET. Example input:000000170000030000000580a22400000030000100004e00020022orBIT_STRING_to_uint64andBIT_STRING_to_uint32.Example inputs:
001200250000030071000f00000070000900a22427226377cc70007f0005603f134000007500027820orf1_setup_failureinopenair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.cwould exit(1) on any F1SetupFailure from CU.