diff --git a/src/mme/mme_context.c b/src/mme/mme_context.c index 144d1039c..69af3f513 100644 --- a/src/mme/mme_context.c +++ b/src/mme/mme_context.c @@ -2703,27 +2703,31 @@ status_t mme_m_tmsi_pool_generate() { status_t rv; int i, j; + int index = 0; d_trace(3, "M-TMSI Pool try to generate...\n"); - for (i = 0; i < MAX_POOL_OF_UE; i++) + for (i = 0; index < MAX_POOL_OF_UE; i++) { mme_m_tmsi_t *m_tmsi = NULL; int conflict = 0; - m_tmsi = &self.m_tmsi.pool[i]; + m_tmsi = &self.m_tmsi.pool[index]; rv = core_generate_random_bytes((c_uint8_t *)m_tmsi, sizeof(*m_tmsi)); d_assert(rv == CORE_OK, return CORE_ERROR, "Cannot generate random"); - for (j = 0; j < i; j++) + for (j = 0; j < index; j++) { if (*m_tmsi == self.m_tmsi.pool[j]) { conflict = 1; + d_trace(3, "[M-TMSI CONFLICT] %d:0x%x == %d:0x%x\n", + index, *m_tmsi, j, self.m_tmsi.pool[j]); break; } } if (conflict == 1) continue; + index++; } - self.m_tmsi.size = i; + self.m_tmsi.size = index; d_trace(3, "M-TMSI Pool generate...done\n"); return CORE_OK;