diff --git a/openair2/ENB_APP/enb_config.c b/openair2/ENB_APP/enb_config.c index fcf444a278391e59da3c3704f3fe67c1b6a5c9d5..dc925da8eb7243fc3e71123a5d778c5fe60bd186 100755 --- a/openair2/ENB_APP/enb_config.c +++ b/openair2/ENB_APP/enb_config.c @@ -2579,18 +2579,27 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) { } system_info_value_tag_SI_list = config_setting_get_member(setting_br13, ENB_CONFIG_STRING_SYSTEM_INFO_VALUE_TAG_LIST); - int num_system_info = config_setting_length(system_info_value_tag_SI_list); - RRC_CONFIGURATION_REQ (msg_p).system_info_value_tag_SI_size[j] = num_system_info; - - for (sys_info_idx = 0; sys_info_idx < num_system_info; ++sys_info_idx) + int num_system_info; + if (system_info_value_tag_SI_list != NULL) { - system_info_value_tag_SI = config_setting_get_elem(system_info_value_tag_SI_list, sys_info_idx); - if ( !(config_setting_lookup_int(system_info_value_tag_SI, ENB_CONFIG_STRING_SYSTEM_INFO_VALUE_TAG_SI_R13, &systemInfoValueTagSi_r13)) ) - { - AssertFatal (0, "Failed to parse eNB configuration file %s, system info value tag %d!\n", RC.config_file_name, nb_cc++); - } - RRC_CONFIGURATION_REQ (msg_p).systemInfoValueTagSi_r13[j][sys_info_idx] = systemInfoValueTagSi_r13; + num_system_info = config_setting_length(system_info_value_tag_SI_list); + for (sys_info_idx = 0; sys_info_idx < num_system_info; ++sys_info_idx) + { + system_info_value_tag_SI = config_setting_get_elem(system_info_value_tag_SI_list, sys_info_idx); + if ( !(config_setting_lookup_int(system_info_value_tag_SI, ENB_CONFIG_STRING_SYSTEM_INFO_VALUE_TAG_SI_R13, &systemInfoValueTagSi_r13)) ) + { + AssertFatal (0, "Failed to parse eNB configuration file %s, system info value tag %d!\n", RC.config_file_name, nb_cc++); + } + RRC_CONFIGURATION_REQ (msg_p).systemInfoValueTagSi_r13[j][sys_info_idx] = systemInfoValueTagSi_r13; + } } + else + { + num_system_info = 0; + } + RRC_CONFIGURATION_REQ (msg_p).system_info_value_tag_SI_size[j] = num_system_info; + + rach_ce_level_info_r13_list = config_setting_get_member(setting_br13, ENB_CONFIG_STRING_RACH_CE_LEVEL_INFO_LIST); diff --git a/openair2/RRC/LITE/MESSAGES/asn1_msg.c b/openair2/RRC/LITE/MESSAGES/asn1_msg.c index e7a7b2e88c18f23a6e73911e10a6a068ceace14b..e34e6f716203f14458aa2abb154e90f15ff6ad38 100755 --- a/openair2/RRC/LITE/MESSAGES/asn1_msg.c +++ b/openair2/RRC/LITE/MESSAGES/asn1_msg.c @@ -653,21 +653,29 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier, sib1_1310->bandwidthReducedAccessRelatedInfo_r13->si_ValidityTime_r13 = NULL; } - sib1_1310->bandwidthReducedAccessRelatedInfo_r13->systemInfoValueTagList_r13 = calloc(1, sizeof(SystemInfoValueTagList_r13_t)); - SystemInfoValueTagSI_r13_t systemInfoValueTagSi_r13; int num_system_info_value_tag = configuration->system_info_value_tag_SI_size[CC_id]; - for (index = 0; index < num_system_info_value_tag; ++index) + if (num_system_info_value_tag > 0) { - if (configuration->systemInfoValueTagSi_r13[CC_id][index]) + sib1_1310->bandwidthReducedAccessRelatedInfo_r13->systemInfoValueTagList_r13 = calloc(1, sizeof(SystemInfoValueTagList_r13_t)); + SystemInfoValueTagSI_r13_t systemInfoValueTagSi_r13; + for (index = 0; index < num_system_info_value_tag; ++index) { - systemInfoValueTagSi_r13 = configuration->systemInfoValueTagSi_r13[CC_id][index]; + if (configuration->systemInfoValueTagSi_r13[CC_id][index]) + { + systemInfoValueTagSi_r13 = configuration->systemInfoValueTagSi_r13[CC_id][index]; + } + else + { + systemInfoValueTagSi_r13 = 0; + } + ASN_SEQUENCE_ADD(&sib1_1310->bandwidthReducedAccessRelatedInfo_r13->systemInfoValueTagList_r13->list, &systemInfoValueTagSi_r13); } - else - { - systemInfoValueTagSi_r13 = 0; - } - ASN_SEQUENCE_ADD(&sib1_1310->bandwidthReducedAccessRelatedInfo_r13->systemInfoValueTagList_r13->list, &systemInfoValueTagSi_r13); + + } + else + { + sib1_1310->bandwidthReducedAccessRelatedInfo_r13->systemInfoValueTagList_r13 = NULL; } }