From 0a5a47addf0a864dd9ddb98bd0d6931662a1a533 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Thu, 1 Mar 2018 19:48:54 +0100 Subject: fix build: gprs_ra_id_by_bts(): ensure to init all values After recent libosmocore commit "implement support for 3-digit MNC with leading zeros" c4fce1425e19d604c199c895e227dc2519110456 Id2240f7f518494c9df6c8bda52c0d5092f90f221, struct gprs_ra_id has a new member, namely mnc_3_digits. In gprs_ra_id_by_bts(), this new member is now not initialized and may end up having an arbitrary value, which then may amount to mnc_3_digits == true. Hence the resulting BCD representation of the MCC-MNC may inadvertently and randomly indicate a leading zero on the MNC. Use a struct assignment so that all members are guaranteed to be set, and so that mnc_3_digits will be zero in all cases. Since above libosmocore commit, nanobts_omlattr_test fails "randomly", fixed by this patch. Change-Id: I872ae3b2b0a0cd8f932f3a5fbc77c0dbfcb28bbf --- src/libbsc/gsm_data.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/libbsc/gsm_data.c b/src/libbsc/gsm_data.c index e1d422edc..15945228a 100644 --- a/src/libbsc/gsm_data.c +++ b/src/libbsc/gsm_data.c @@ -271,10 +271,12 @@ struct gsm_bts *gsm_bts_alloc_register(struct gsm_network *net, enum gsm_bts_typ void gprs_ra_id_by_bts(struct gprs_ra_id *raid, struct gsm_bts *bts) { - raid->mcc = bts->network->country_code; - raid->mnc = bts->network->network_code; - raid->lac = bts->location_area_code; - raid->rac = bts->gprs.rac; + *raid = (struct gprs_ra_id){ + .mcc = bts->network->country_code, + .mnc = bts->network->network_code, + .lac = bts->location_area_code, + .rac = bts->gprs.rac, + }; } int gsm48_ra_id_by_bts(uint8_t *buf, struct gsm_bts *bts) -- cgit v1.2.3