neels has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bts/+/39376?usp=email )
Change subject: coverity: ensure lchan->si->* bitmask sizes ......................................................................
coverity: ensure lchan->si->* bitmask sizes
osmo-bts' gsm_lchan->si bitmasks are 32 bit wide, and loops use _MAX_SYSINFO_TYPE to iterate them. Make sure that _MAX_SYSINFO_TYPE (from libosmocore) never surpasses 32 without us noticing the problem.
(However unlikely that is.)
Related: CID#465523 Change-Id: Ieb5d35e720e8d77336f6f912d039bab7f3b95c55 --- M include/osmo-bts/lchan.h M tests/misc/misc_test.c 2 files changed, 3 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/76/39376/1
diff --git a/include/osmo-bts/lchan.h b/include/osmo-bts/lchan.h index 5c34015..25ca477 100644 --- a/include/osmo-bts/lchan.h +++ b/include/osmo-bts/lchan.h @@ -385,6 +385,8 @@ struct osmo_timer_list early_rr_ia_delay; };
+osmo_static_assert(_MAX_SYSINFO_TYPE <= 32, ensure_gsm_lchan_si_bitmasks_are_large_enough); + extern const struct value_string lchan_ciph_state_names[]; static inline const char *lchan_ciph_state_name(uint8_t state) { diff --git a/tests/misc/misc_test.c b/tests/misc/misc_test.c index bbf7557..e9adc5d 100644 --- a/tests/misc/misc_test.c +++ b/tests/misc/misc_test.c @@ -145,7 +145,7 @@
/* initialize the input. */ for (i = 1; i < _MAX_SYSINFO_TYPE; ++i) { - lchan.si.valid |= (1 << i); + lchan.si.valid |= (((uint32_t)1) << i); memset(GSM_LCHAN_SI(&lchan, i), i, GSM_MACBLOCK_LEN); }