From 5c8410c56f42a62b6c3981f4c8a8e3bddc75b451 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Leroy?= <frederic.leroy@b-com.com> Date: Mon, 22 Aug 2016 15:43:42 +0200 Subject: [PATCH] fix(conf2uedata): make hplmn_index a local variable There was a side effect corrupting data because hplmn_index was not computed. --- openair3/NAS/TOOLS/conf2uedata.c | 1 - openair3/NAS/TOOLS/conf2uedata.h | 1 - openair3/NAS/TOOLS/conf_emm.c | 9 ++++----- openair3/NAS/TOOLS/conf_emm.h | 2 +- openair3/NAS/TOOLS/conf_usim.c | 5 ++++- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/openair3/NAS/TOOLS/conf2uedata.c b/openair3/NAS/TOOLS/conf2uedata.c index a3beb27b2d..804c8aecdb 100644 --- a/openair3/NAS/TOOLS/conf2uedata.c +++ b/openair3/NAS/TOOLS/conf2uedata.c @@ -18,7 +18,6 @@ int *ocplmn = NULL; int *fplmn = NULL; int *ehplmn = NULL; -int hplmn_index = 0; int plmn_nb = 0; int ucplmn_nb = 0; int oplmn_nb = 0; diff --git a/openair3/NAS/TOOLS/conf2uedata.h b/openair3/NAS/TOOLS/conf2uedata.h index 7ae326bf1c..ed74ccf288 100644 --- a/openair3/NAS/TOOLS/conf2uedata.h +++ b/openair3/NAS/TOOLS/conf2uedata.h @@ -49,7 +49,6 @@ extern int *ocplmn; extern int *fplmn; extern int *ehplmn; -extern int hplmn_index; extern int plmn_nb; extern int ucplmn_nb; extern int oplmn_nb; diff --git a/openair3/NAS/TOOLS/conf_emm.c b/openair3/NAS/TOOLS/conf_emm.c index ad877e32ef..de696592de 100644 --- a/openair3/NAS/TOOLS/conf_emm.c +++ b/openair3/NAS/TOOLS/conf_emm.c @@ -6,11 +6,10 @@ #include "fs.h" void gen_emm_data(emm_nvdata_t *emm_data, const char *hplmn, const char *msin) { - hplmn_index = get_plmn_index(hplmn); memset(emm_data, 0, sizeof(emm_nvdata_t)); int hplmn_index = get_plmn_index(hplmn); emm_data->imsi.length = 8; - emm_data->imsi.u.num.parity = get_msin_parity(msin); + emm_data->imsi.u.num.parity = get_msin_parity(msin, user_plmn_list[hplmn_index].mcc, user_plmn_list[hplmn_index].mnc); emm_data->imsi.u.num.digit1 = user_plmn_list[hplmn_index].mcc[0]; emm_data->imsi.u.num.digit2 = user_plmn_list[hplmn_index].mcc[1]; emm_data->imsi.u.num.digit3 = user_plmn_list[hplmn_index].mcc[2]; @@ -69,9 +68,9 @@ int write_emm_data(const char *directory, int user_id, emm_nvdata_t *emm_data) { return(EXIT_SUCCESS); } -int get_msin_parity(const char * msin) { - int imsi_size = strlen(msin) + strlen(user_plmn_list[hplmn_index].mcc) - + strlen(user_plmn_list[hplmn_index].mnc); +int get_msin_parity(const char * msin, const char *mcc, const char *mnc) { + int imsi_size = strlen(msin) + strlen(mcc) + + strlen(mnc); int result = (imsi_size % 2 == 0) ? 0 : 1; return result; diff --git a/openair3/NAS/TOOLS/conf_emm.h b/openair3/NAS/TOOLS/conf_emm.h index 80562aba55..996e63ca05 100644 --- a/openair3/NAS/TOOLS/conf_emm.h +++ b/openair3/NAS/TOOLS/conf_emm.h @@ -5,6 +5,6 @@ void gen_emm_data(emm_nvdata_t *emm_data, const char *hplmn, const char *msin); int write_emm_data(const char *directory, int user_id, emm_nvdata_t *emm_data); -int get_msin_parity(const char * msin); +int get_msin_parity(const char * msin, const char *mcc, const char *mnc); #endif diff --git a/openair3/NAS/TOOLS/conf_usim.c b/openair3/NAS/TOOLS/conf_usim.c index ee8ed8e0d0..345309996f 100644 --- a/openair3/NAS/TOOLS/conf_usim.c +++ b/openair3/NAS/TOOLS/conf_usim.c @@ -41,9 +41,12 @@ int parse_ue_sim_param(config_setting_t *ue_setting, int user_id, usim_data_conf } void gen_usim_data(usim_data_conf_t *u, usim_data_t *usim_data) { + int hplmn_index = get_plmn_index(u->hplmn); memset(usim_data, 0, sizeof(usim_data_t)); usim_data->imsi.length = 8; - usim_data->imsi.u.num.parity = get_msin_parity(u->msin); + usim_data->imsi.u.num.parity = get_msin_parity(u->msin, + user_plmn_list[hplmn_index].mcc, + user_plmn_list[hplmn_index].mnc); usim_data->imsi.u.num.digit1 = user_plmn_list[hplmn_index].mcc[0]; usim_data->imsi.u.num.digit2 = user_plmn_list[hplmn_index].mcc[1]; -- GitLab