fix the bug M-TMSI generator

This commit is contained in:
Sukchan Lee 2018-01-21 22:36:49 +09:00
parent 8557d50341
commit 4c8e2add2f
1 changed files with 8 additions and 4 deletions

View File

@ -2703,27 +2703,31 @@ status_t mme_m_tmsi_pool_generate()
{ {
status_t rv; status_t rv;
int i, j; int i, j;
int index = 0;
d_trace(3, "M-TMSI Pool try to generate...\n"); 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; mme_m_tmsi_t *m_tmsi = NULL;
int conflict = 0; 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)); rv = core_generate_random_bytes((c_uint8_t *)m_tmsi, sizeof(*m_tmsi));
d_assert(rv == CORE_OK, return CORE_ERROR, "Cannot generate random"); 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]) if (*m_tmsi == self.m_tmsi.pool[j])
{ {
conflict = 1; 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; break;
} }
} }
if (conflict == 1) continue; if (conflict == 1) continue;
index++;
} }
self.m_tmsi.size = i; self.m_tmsi.size = index;
d_trace(3, "M-TMSI Pool generate...done\n"); d_trace(3, "M-TMSI Pool generate...done\n");
return CORE_OK; return CORE_OK;