<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/16996">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">csn1: shuffle decrements of remaining_bits_len<br><br>So that they always occur next to an increment of bit_offset.<br><br>Port from wireshark.git 1c81971d4292438ffdf83e9f9b9ab96c133c785b.<br><br>Change-Id: I7474e9d632e068d6e33b0a502b81d4fff1f48802<br>---<br>M src/csn1.cpp<br>1 file changed, 14 insertions(+), 20 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/96/16996/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/csn1.cpp b/src/csn1.cpp</span><br><span>index 1174347..20b6c6f 100644</span><br><span>--- a/src/csn1.cpp</span><br><span>+++ b/src/csn1.cpp</span><br><span>@@ -1243,6 +1243,7 @@</span><br><span> LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)bitvec_read_field(vector, &readIndex, 1));</span><br><span> /* existNextElement() returned FALSE, 1 bit consumed */</span><br><span> bit_offset++;</span><br><span style="color: hsl(120, 100%, 40%);">+ remaining_bits_len --;</span><br><span> </span><br><span> /* Store the counted number of elements of the array */</span><br><span> *pui8DATA(data, (gint16)pDescr->descr.value) = ElementCount;</span><br><span>@@ -1567,7 +1568,6 @@</span><br><span> </span><br><span> if (remaining_bits_len >= no_of_bits)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- remaining_bits_len -= no_of_bits;</span><br><span> if (no_of_bits <= 8)</span><br><span> {</span><br><span> pui8 = pui8DATA(data, pDescr->offset);</span><br><span>@@ -1608,7 +1608,6 @@</span><br><span> </span><br><span> if (remaining_bits_len >= no_of_bits)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- remaining_bits_len -= (no_of_bits*nCount);</span><br><span> if (no_of_bits <= 8)</span><br><span> {</span><br><span> pui8 = pui8DATA(data, pDescr->offset);</span><br><span>@@ -1617,6 +1616,7 @@</span><br><span> bitvec_write_field(vector, &writeIndex, *pui8, no_of_bits);</span><br><span> LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8);</span><br><span> pui8++;</span><br><span style="color: hsl(120, 100%, 40%);">+ remaining_bits_len -= no_of_bits;</span><br><span> bit_offset += no_of_bits;</span><br><span> } while (--nCount > 0);</span><br><span> }</span><br><span>@@ -1887,7 +1887,7 @@</span><br><span> pui8 = pui8DATA(data, pDescr->offset);</span><br><span> bitvec_write_field(vector, &writeIndex, *pui8, 1);</span><br><span> LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8);</span><br><span style="color: hsl(0, 100%, 40%);">- remaining_bits_len -= 1;</span><br><span style="color: hsl(120, 100%, 40%);">+ remaining_bits_len --;</span><br><span> bit_offset++;</span><br><span> pDescr++;</span><br><span> break;</span><br><span>@@ -1904,8 +1904,6 @@</span><br><span> guint8 no_of_bits = (guint8) pDescr->i;</span><br><span> if (remaining_bits_len >= no_of_bits)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- remaining_bits_len -= no_of_bits;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> if (no_of_bits <= 8)</span><br><span> {</span><br><span> pui8 = pui8DATA(data, pDescr->offset);</span><br><span>@@ -1934,6 +1932,7 @@</span><br><span> return ProcessError(writeIndex,"csnStreamEncoder", CSN_ERROR_GENERAL, pDescr);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ remaining_bits_len -= no_of_bits;</span><br><span> bit_offset += no_of_bits;</span><br><span> pDescr++;</span><br><span> break;</span><br><span>@@ -2026,7 +2025,6 @@</span><br><span> </span><br><span> if (remaining_bits_len >= no_of_bits)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- remaining_bits_len -= (no_of_bits*nCount);</span><br><span> if (no_of_bits <= 8)</span><br><span> {</span><br><span> pui8 = pui8DATA(data, pDescr->offset);</span><br><span>@@ -2035,6 +2033,7 @@</span><br><span> bitvec_write_field(vector, &writeIndex, *pui8, no_of_bits);</span><br><span> LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8);</span><br><span> pui8++;</span><br><span style="color: hsl(120, 100%, 40%);">+ remaining_bits_len -= no_of_bits;</span><br><span> bit_offset += no_of_bits;</span><br><span> } while (--nCount > 0);</span><br><span> }</span><br><span>@@ -2191,8 +2190,9 @@</span><br><span> writeIndex--;</span><br><span> bitvec_write_field(vector, &writeIndex, fExist, 1);</span><br><span> LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz, (unsigned)fExist);</span><br><span style="color: hsl(120, 100%, 40%);">+ remaining_bits_len --;</span><br><span style="color: hsl(120, 100%, 40%);">+ bit_offset++;</span><br><span> pDescr++;</span><br><span style="color: hsl(0, 100%, 40%);">- remaining_bits_len -= 1;</span><br><span> </span><br><span> if (!exist)</span><br><span> {</span><br><span>@@ -2222,9 +2222,9 @@</span><br><span> bitvec_write_field(vector, &writeIndex, *pui8, 1);</span><br><span> fExist = *pui8;</span><br><span> LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8);</span><br><span style="color: hsl(0, 100%, 40%);">- remaining_bits_len -= 1;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- ++bit_offset;</span><br><span style="color: hsl(120, 100%, 40%);">+ remaining_bits_len --;</span><br><span style="color: hsl(120, 100%, 40%);">+ bit_offset++;</span><br><span> </span><br><span> if (fExist == 0)</span><br><span> { /* Skip 'i' entries */</span><br><span>@@ -2247,12 +2247,6 @@</span><br><span> /* skip 'i' entries + this entry */</span><br><span> pDescr += pDescr->i + 1;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- /* pDescr now must be pointing to a CSN_END entry, if not this is an error */</span><br><span style="color: hsl(0, 100%, 40%);">- if ( pDescr->type != CSN_END )</span><br><span style="color: hsl(0, 100%, 40%);">- { /* substract one more bit from remaining_bits_len to make the "not enough bits" error to be triggered */</span><br><span style="color: hsl(0, 100%, 40%);">- remaining_bits_len--;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> /* set the data member to "not exist" */</span><br><span> //*pui8 = 0;</span><br><span> break;</span><br><span>@@ -2265,8 +2259,8 @@</span><br><span> writeIndex--;</span><br><span> bitvec_write_field(vector, &writeIndex, fExist, 1);</span><br><span> pui8++;</span><br><span style="color: hsl(0, 100%, 40%);">- remaining_bits_len -= 1;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ remaining_bits_len --;</span><br><span> bit_offset++;</span><br><span> </span><br><span> if (fExist == 0)</span><br><span>@@ -2299,7 +2293,6 @@</span><br><span> </span><br><span> if (no_of_bits > 0)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- remaining_bits_len -= no_of_bits;</span><br><span> </span><br><span> if (remaining_bits_len < 0)</span><br><span> {</span><br><span>@@ -2317,6 +2310,7 @@</span><br><span> pui8++;</span><br><span> no_of_bits -= nB1;</span><br><span> bit_offset += nB1; /* (nB1 is no_of_bits Mod 8) */</span><br><span style="color: hsl(120, 100%, 40%);">+ remaining_bits_len -= nB1;</span><br><span> }</span><br><span> </span><br><span> /* remaining no_of_bits is a multiple of 8 or 0 */</span><br><span>@@ -2326,6 +2320,7 @@</span><br><span> LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8);</span><br><span> pui8++;</span><br><span> no_of_bits -= 8;</span><br><span style="color: hsl(120, 100%, 40%);">+ remaining_bits_len -= 8;</span><br><span> }</span><br><span> }</span><br><span> }</span><br><span>@@ -2444,8 +2439,6 @@</span><br><span> </span><br><span> if (count > 0)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- remaining_bits_len -= count * 8;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> if (remaining_bits_len < 0)</span><br><span> {</span><br><span> return ProcessError(writeIndex,"csnStreamEncoder", CSN_ERROR_NEED_MORE_BITS_TO_UNPACK, pDescr);</span><br><span>@@ -2459,6 +2452,7 @@</span><br><span> LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8);</span><br><span> pui8++;</span><br><span> bit_offset += 8;</span><br><span style="color: hsl(120, 100%, 40%);">+ remaining_bits_len -= 8;</span><br><span> count--;</span><br><span> }</span><br><span> }</span><br><span>@@ -2491,7 +2485,6 @@</span><br><span> bitvec_write_field(vector, &writeIndex, *pui8, no_of_bits);</span><br><span> LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8);</span><br><span> pui8++;</span><br><span style="color: hsl(0, 100%, 40%);">- remaining_bits_len -= no_of_bits;</span><br><span> ElementCount--;</span><br><span> </span><br><span> if (remaining_bits_len < 0)</span><br><span>@@ -2500,6 +2493,7 @@</span><br><span> }</span><br><span> </span><br><span> bit_offset += no_of_bits;</span><br><span style="color: hsl(120, 100%, 40%);">+ remaining_bits_len -= no_of_bits;</span><br><span> }</span><br><span> </span><br><span> bitvec_write_field(vector, &writeIndex, !Tag, 1);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/16996">change 16996</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-pcu/+/16996"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-pcu </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I7474e9d632e068d6e33b0a502b81d4fff1f48802 </div>
<div style="display:none"> Gerrit-Change-Number: 16996 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>