<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/22432">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">select_best_cipher(): Prefer A5/1 over A5/2<br><br>We cannot simply use the highest 'x' in A5/x codecs.<br><br>For A5/7 through A5/3, larger 'x' means better.<br>But: A5/1 is better than A5/2, so we need to prefer the former<br>over the latter.<br><br>Change-Id: I399fff8d07d1bfcbc6b385e90914ff6d9e00eb73<br>Closes: OS#4975<br>---<br>M src/osmo-bsc/osmo_bsc_bssap.c<br>1 file changed, 7 insertions(+), 3 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/32/22432/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c</span><br><span>index 63dee9e..9d78153 100644</span><br><span>--- a/src/osmo-bsc/osmo_bsc_bssap.c</span><br><span>+++ b/src/osmo-bsc/osmo_bsc_bssap.c</span><br><span>@@ -402,12 +402,16 @@</span><br><span> /* select the best cipher permitted by the intersection of both masks */</span><br><span> static int select_best_cipher(uint8_t msc_mask, uint8_t bsc_mask)</span><br><span> {</span><br><span style="color: hsl(120, 100%, 40%);">+    /* A5/7 ... A5/3: We assume higher is better,</span><br><span style="color: hsl(120, 100%, 40%);">+  * but: A5/1 is better than A5/2, which is better than A5/0 */</span><br><span style="color: hsl(120, 100%, 40%);">+        const uint8_t codec_strength[8] = { 7, 6, 5, 4, 3, 1, 2, 0 };</span><br><span>        uint8_t intersection = msc_mask & bsc_mask;</span><br><span>      int i;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      for (i = 7; i >= 0; i--) {</span><br><span style="color: hsl(0, 100%, 40%);">-           if (intersection & (1 << i))</span><br><span style="color: hsl(0, 100%, 40%);">-                  return i;</span><br><span style="color: hsl(120, 100%, 40%);">+     for (i = 0; i < ARRAY_SIZE(codec_strength); i++) {</span><br><span style="color: hsl(120, 100%, 40%);">+         uint8_t codec = codec_strength[i];</span><br><span style="color: hsl(120, 100%, 40%);">+            if (intersection & (1 << codec))</span><br><span style="color: hsl(120, 100%, 40%);">+                    return codec;</span><br><span>        }</span><br><span>    return -1;</span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/22432">change 22432</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/c/osmo-bsc/+/22432"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bsc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I399fff8d07d1bfcbc6b385e90914ff6d9e00eb73 </div>
<div style="display:none"> Gerrit-Change-Number: 22432 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>