diff options
author | Vadim Yanitskiy <axilirator@gmail.com> | 2018-07-16 22:05:38 +0000 |
---|---|---|
committer | Vadim Yanitskiy <axilirator@gmail.com> | 2018-07-17 05:09:58 +0700 |
commit | a0eef8d2e89ddd610bd8d8aa7511d444bd6590ca (patch) | |
tree | d615c3ba2625950585014b9aaf0a0b53fe80b354 /src/host/layer23/src/mobile/settings.c | |
parent | 70a50a33ccb1d2fcf52a46bcabf5ffd8534c883d (diff) |
Revert "Move from libc random() to osmo_get_rand_id"
It was decided to migrate to osmo_get_rand_id() and use random()
as a fall-back. But there is a critical difference between both
functions: osmo_get_rand_id() fills an input buffer with random
bytes (0x00 - 0xff), while *random() returns a value in range
between 0 and RAND_MAX.
osmo_get_rand_id() was used in a wrong way, so in some cases we
could get a negative value (how about IMEI starting from '-'?),
what isn't expected in many cases and could lead to unexpected
behaviour and segmentation faults...
This reverts commit 6d49b049ee304f1ea0e4801df61e69713b01f0f8.
Change-Id: I7b2a8a5c63cf64360a824926a2219fd7e419b1bb
Diffstat (limited to 'src/host/layer23/src/mobile/settings.c')
-rw-r--r-- | src/host/layer23/src/mobile/settings.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/src/host/layer23/src/mobile/settings.c b/src/host/layer23/src/mobile/settings.c index 80b0b482..7370b0ab 100644 --- a/src/host/layer23/src/mobile/settings.c +++ b/src/host/layer23/src/mobile/settings.c @@ -23,7 +23,6 @@ #include <errno.h> #include <string.h> #include <osmocom/core/talloc.h> -#include <osmocom/gsm/gsm_utils.h> #include <osmocom/bb/mobile/app_mobile.h> #include <osmocom/bb/common/logging.h> @@ -179,19 +178,14 @@ int gsm_random_imei(struct gsm_settings *set) { int digits = set->imei_random; char rand[16]; - long rand_num; if (digits <= 0) return 0; if (digits > 15) digits = 15; - if (osmo_get_rand_id((uint8_t *) &rand_num, sizeof(rand_num)) != 0) - rand_num = random(); - sprintf(rand, "%08ld", rand_num % 100000000); - if (osmo_get_rand_id((uint8_t *) &rand_num, sizeof(rand_num)) != 0) - rand_num = random(); - sprintf(rand + 8, "%07ld", rand_num % 10000000); + sprintf(rand, "%08ld", random() % 100000000); + sprintf(rand + 8, "%07ld", random() % 10000000); strcpy(set->imei + 15 - digits, rand + 15 - digits); strncpy(set->imeisv, set->imei, 15); |