<p>Vadim Yanitskiy <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/10020">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  Holger Freyther: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Revert "Move from libc random() to osmo_get_rand_id"<br><br>It was decided to migrate to osmo_get_rand_id() and use random()<br>as a fall-back. But there is a critical difference between both<br>functions: osmo_get_rand_id() fills an input buffer with random<br>bytes (0x00 - 0xff), while *random() returns a value in range<br>between 0 and RAND_MAX.<br><br>osmo_get_rand_id() was used in a wrong way, so in some cases we<br>could get a negative value (how about IMEI starting from '-'?),<br>what isn't expected in many cases and could lead to unexpected<br>behaviour and segmentation faults...<br><br>This reverts commit 6d49b049ee304f1ea0e4801df61e69713b01f0f8.<br><br>Change-Id: I7b2a8a5c63cf64360a824926a2219fd7e419b1bb<br>---<br>M src/host/layer23/src/mobile/gsm322.c<br>M src/host/layer23/src/mobile/gsm48_mm.c<br>M src/host/layer23/src/mobile/gsm48_rr.c<br>M src/host/layer23/src/mobile/settings.c<br>4 files changed, 5 insertions(+), 18 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/host/layer23/src/mobile/gsm322.c b/src/host/layer23/src/mobile/gsm322.c</span><br><span>index ce25cd5..c3485b6 100644</span><br><span>--- a/src/host/layer23/src/mobile/gsm322.c</span><br><span>+++ b/src/host/layer23/src/mobile/gsm322.c</span><br><span>@@ -959,9 +959,7 @@</span><br><span>                        entries++;</span><br><span>   }</span><br><span>    while(entries) {</span><br><span style="color: hsl(0, 100%, 40%);">-                if (osmo_get_rand_id((uint8_t *) &move, sizeof(move)) != 0)</span><br><span style="color: hsl(0, 100%, 40%);">-                 move = random();</span><br><span style="color: hsl(0, 100%, 40%);">-                move = move % entries;</span><br><span style="color: hsl(120, 100%, 40%);">+                move = random() % entries;</span><br><span>           i = 0;</span><br><span>               llist_for_each_entry(temp, &temp_list, entry) {</span><br><span>                  if (rxlev2dbm(temp->rxlev) > -85) {</span><br><span>diff --git a/src/host/layer23/src/mobile/gsm48_mm.c b/src/host/layer23/src/mobile/gsm48_mm.c</span><br><span>index a36e7e8..a7af1f5 100644</span><br><span>--- a/src/host/layer23/src/mobile/gsm48_mm.c</span><br><span>+++ b/src/host/layer23/src/mobile/gsm48_mm.c</span><br><span>@@ -30,7 +30,6 @@</span><br><span> #include <osmocom/core/utils.h></span><br><span> #include <osmocom/gsm/gsm48.h></span><br><span> #include <osmocom/core/talloc.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/gsm/gsm_utils.h></span><br><span> </span><br><span> #include <osmocom/bb/common/logging.h></span><br><span> #include <osmocom/bb/common/osmocom_data.h></span><br><span>@@ -2100,9 +2099,7 @@</span><br><span>                       mm->t3212.timeout.tv_sec = current_time.tv_sec</span><br><span>                            + (t % s->t3212);</span><br><span>                 } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                        uint32_t rand;</span><br><span style="color: hsl(0, 100%, 40%);">-                  if (osmo_get_rand_id((uint8_t *) &rand, sizeof(rand)) != 0)</span><br><span style="color: hsl(0, 100%, 40%);">-                         rand = random();</span><br><span style="color: hsl(120, 100%, 40%);">+                      uint32_t rand = random();</span><br><span> </span><br><span>                        LOGP(DMM, LOGL_INFO, "New T3212 while timer is not "</span><br><span>                               "running (value %d)\n", s->t3212);</span><br><span>diff --git a/src/host/layer23/src/mobile/gsm48_rr.c b/src/host/layer23/src/mobile/gsm48_rr.c</span><br><span>index db2cb5e..dd3fe93 100644</span><br><span>--- a/src/host/layer23/src/mobile/gsm48_rr.c</span><br><span>+++ b/src/host/layer23/src/mobile/gsm48_rr.c</span><br><span>@@ -71,7 +71,6 @@</span><br><span> #include <osmocom/gsm/rsl.h></span><br><span> #include <osmocom/gsm/gsm48.h></span><br><span> #include <osmocom/core/bitvec.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/gsm/gsm_utils.h></span><br><span> </span><br><span> #include <osmocom/bb/common/osmocom_data.h></span><br><span> #include <osmocom/bb/common/l1l2_interface.h></span><br><span>@@ -1629,8 +1628,7 @@</span><br><span>             }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   if (osmo_get_rand_id((uint8_t *) &chan_req, sizeof(chan_req)) != 0)</span><br><span style="color: hsl(0, 100%, 40%);">-         chan_req = random();</span><br><span style="color: hsl(120, 100%, 40%);">+  chan_req = random();</span><br><span>         chan_req &= rr->chan_req_mask;</span><br><span>        chan_req |= rr->chan_req_val;</span><br><span> </span><br><span>diff --git a/src/host/layer23/src/mobile/settings.c b/src/host/layer23/src/mobile/settings.c</span><br><span>index 80b0b48..7370b0a 100644</span><br><span>--- a/src/host/layer23/src/mobile/settings.c</span><br><span>+++ b/src/host/layer23/src/mobile/settings.c</span><br><span>@@ -23,7 +23,6 @@</span><br><span> #include <errno.h></span><br><span> #include <string.h></span><br><span> #include <osmocom/core/talloc.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <osmocom/gsm/gsm_utils.h></span><br><span> </span><br><span> #include <osmocom/bb/mobile/app_mobile.h></span><br><span> #include <osmocom/bb/common/logging.h></span><br><span>@@ -179,19 +178,14 @@</span><br><span> {</span><br><span>         int digits = set->imei_random;</span><br><span>    char rand[16];</span><br><span style="color: hsl(0, 100%, 40%);">-  long rand_num;</span><br><span> </span><br><span>   if (digits <= 0)</span><br><span>          return 0;</span><br><span>    if (digits > 15)</span><br><span>          digits = 15;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        if (osmo_get_rand_id((uint8_t *) &rand_num, sizeof(rand_num)) != 0)</span><br><span style="color: hsl(0, 100%, 40%);">-         rand_num = random();</span><br><span style="color: hsl(0, 100%, 40%);">-    sprintf(rand, "%08ld", rand_num % 100000000);</span><br><span style="color: hsl(0, 100%, 40%);">- if (osmo_get_rand_id((uint8_t *) &rand_num, sizeof(rand_num)) != 0)</span><br><span style="color: hsl(0, 100%, 40%);">-         rand_num = random();</span><br><span style="color: hsl(0, 100%, 40%);">-    sprintf(rand + 8, "%07ld", rand_num % 10000000);</span><br><span style="color: hsl(120, 100%, 40%);">+    sprintf(rand, "%08ld", random() % 100000000);</span><br><span style="color: hsl(120, 100%, 40%);">+       sprintf(rand + 8, "%07ld", random() % 10000000);</span><br><span> </span><br><span>       strcpy(set->imei + 15 - digits, rand + 15 - digits);</span><br><span>      strncpy(set->imeisv, set->imei, 15);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/10020">change 10020</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/10020"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmocom-bb </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I7b2a8a5c63cf64360a824926a2219fd7e419b1bb </div>
<div style="display:none"> Gerrit-Change-Number: 10020 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Holger Freyther <holger@freyther.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: Vadim Yanitskiy <axilirator@gmail.com> </div>