<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/17086">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  fixeria: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Check return code of rlcmac decode/encode functions<br><br>Change-Id: Iabcb768bd714680aa768b35c786dea2015d1e451<br>---<br>M src/pdch.cpp<br>M src/tbf.cpp<br>M tests/rlcmac/RLCMACTest.cpp<br>M tests/rlcmac/RLCMACTest.ok<br>M tests/tbf/TbfTest.cpp<br>5 files changed, 115 insertions(+), 70 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/pdch.cpp b/src/pdch.cpp</span><br><span>index e15af2c..f4544b2 100644</span><br><span>--- a/src/pdch.cpp</span><br><span>+++ b/src/pdch.cpp</span><br><span>@@ -175,8 +175,11 @@</span><br><span> struct msgb *gprs_rlcmac_pdch::packet_paging_request()</span><br><span> {</span><br><span>       struct gprs_rlcmac_paging *pag;</span><br><span style="color: hsl(120, 100%, 40%);">+       RlcMacDownlink_t *mac_control_block;</span><br><span style="color: hsl(120, 100%, 40%);">+  bitvec *pag_vec;</span><br><span>     struct msgb *msg;</span><br><span>    unsigned wp = 0, len;</span><br><span style="color: hsl(120, 100%, 40%);">+ int rc;</span><br><span> </span><br><span>  /* no paging, no message */</span><br><span>  pag = dequeue_paging();</span><br><span>@@ -191,7 +194,7 @@</span><br><span>                talloc_free(pag);</span><br><span>            return NULL;</span><br><span>         }</span><br><span style="color: hsl(0, 100%, 40%);">-       bitvec *pag_vec = bitvec_alloc(23, tall_pcu_ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+     pag_vec = bitvec_alloc(23, tall_pcu_ctx);</span><br><span>    if (!pag_vec) {</span><br><span>              msgb_free(msg);</span><br><span>              talloc_free(pag);</span><br><span>@@ -240,15 +243,23 @@</span><br><span>    }</span><br><span> </span><br><span>        bitvec_pack(pag_vec, msgb_put(msg, 23));</span><br><span style="color: hsl(0, 100%, 40%);">-        RlcMacDownlink_t * mac_control_block = (RlcMacDownlink_t *)talloc_zero(tall_pcu_ctx, RlcMacDownlink_t);</span><br><span style="color: hsl(120, 100%, 40%);">+       mac_control_block = (RlcMacDownlink_t *)talloc_zero(tall_pcu_ctx, RlcMacDownlink_t);</span><br><span>         LOGP(DRLCMAC, LOGL_DEBUG, "+++++++++++++++++++++++++ TX : Packet Paging Request +++++++++++++++++++++++++\n");</span><br><span style="color: hsl(0, 100%, 40%);">-        decode_gsm_rlcmac_downlink(pag_vec, mac_control_block);</span><br><span style="color: hsl(0, 100%, 40%);">- LOGPC(DCSN1, LOGL_NOTICE, "\n");</span><br><span style="color: hsl(120, 100%, 40%);">+    rc = decode_gsm_rlcmac_downlink(pag_vec, mac_control_block);</span><br><span style="color: hsl(120, 100%, 40%);">+  if (rc < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+              LOGP(DRLCMAC, LOGL_ERROR, "Decoding of Downlink Packet Paging Request failed (%d)\n", rc);</span><br><span style="color: hsl(120, 100%, 40%);">+          goto free_ret;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span>    LOGP(DRLCMAC, LOGL_DEBUG, "------------------------- TX : Packet Paging Request -------------------------\n");</span><br><span>     bitvec_free(pag_vec);</span><br><span>        talloc_free(mac_control_block);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>      return msg;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+free_ret:</span><br><span style="color: hsl(120, 100%, 40%);">+      bitvec_free(pag_vec);</span><br><span style="color: hsl(120, 100%, 40%);">+ talloc_free(mac_control_block);</span><br><span style="color: hsl(120, 100%, 40%);">+       msgb_free(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+       return NULL;</span><br><span> }</span><br><span> </span><br><span> bool gprs_rlcmac_pdch::add_paging(uint8_t chan_needed, const uint8_t *mi, uint8_t mi_len)</span><br><span>@@ -686,6 +697,7 @@</span><br><span>     bitvec *rlc_block;</span><br><span>   RlcMacUplink_t *ul_control_block;</span><br><span>    unsigned len = cs.maxBytesUL();</span><br><span style="color: hsl(120, 100%, 40%);">+       int rc;</span><br><span> </span><br><span>  if (!(rlc_block = bitvec_alloc(len, tall_pcu_ctx)))</span><br><span>          return -ENOMEM;</span><br><span>@@ -693,8 +705,12 @@</span><br><span>       ul_control_block = (RlcMacUplink_t *)talloc_zero(tall_pcu_ctx, RlcMacUplink_t);</span><br><span> </span><br><span>  LOGP(DRLCMAC, LOGL_DEBUG, "+++++++++++++++++++++++++ RX : Uplink Control Block +++++++++++++++++++++++++\n");</span><br><span style="color: hsl(0, 100%, 40%);">- decode_gsm_rlcmac_uplink(rlc_block, ul_control_block);</span><br><span style="color: hsl(0, 100%, 40%);">-  LOGPC(DCSN1, LOGL_NOTICE, "\n");</span><br><span style="color: hsl(120, 100%, 40%);">+    rc = decode_gsm_rlcmac_uplink(rlc_block, ul_control_block);</span><br><span style="color: hsl(120, 100%, 40%);">+   if(rc < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+               LOGP(DRLCMACUL, LOGL_ERROR, "Dropping Uplink Control Block with invalid "</span><br><span style="color: hsl(120, 100%, 40%);">+                "content, decode failed: %d)\n", rc);</span><br><span style="color: hsl(120, 100%, 40%);">+          goto free_ret;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span>    LOGP(DRLCMAC, LOGL_DEBUG, "------------------------- RX : Uplink Control Block -------------------------\n");</span><br><span> </span><br><span>  if (ul_control_block->u.MESSAGE_TYPE == MT_PACKET_UPLINK_DUMMY_CONTROL_BLOCK)</span><br><span>@@ -728,9 +744,10 @@</span><br><span>                      "RX: [PCU <- BTS] unknown control block(%d) received\n",</span><br><span>                        ul_control_block->u.MESSAGE_TYPE);</span><br><span>        }</span><br><span style="color: hsl(120, 100%, 40%);">+free_ret:</span><br><span>         talloc_free(ul_control_block);</span><br><span>       bitvec_free(rlc_block);</span><br><span style="color: hsl(0, 100%, 40%);">- return 1;</span><br><span style="color: hsl(120, 100%, 40%);">+     return rc;</span><br><span> }</span><br><span> </span><br><span> /* received RLC/MAC block from L1 */</span><br><span>diff --git a/src/tbf.cpp b/src/tbf.cpp</span><br><span>index 61d8d58..b852cd2 100644</span><br><span>--- a/src/tbf.cpp</span><br><span>+++ b/src/tbf.cpp</span><br><span>@@ -1201,6 +1201,8 @@</span><br><span> {</span><br><span>    struct msgb *msg;</span><br><span>    struct gprs_rlcmac_dl_tbf *new_dl_tbf = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+ RlcMacDownlink_t *mac_control_block = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+   bitvec *ass_vec = NULL;</span><br><span>      int poll_ass_dl = 1;</span><br><span>         unsigned int rrbp = 0;</span><br><span>       uint32_t new_poll_fn = 0;</span><br><span>@@ -1264,27 +1266,26 @@</span><br><span>  msg = msgb_alloc(23, "rlcmac_dl_ass");</span><br><span>     if (!msg)</span><br><span>            return NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-    bitvec *ass_vec = bitvec_alloc(23, tall_pcu_ctx);</span><br><span style="color: hsl(0, 100%, 40%);">-       if (!ass_vec) {</span><br><span style="color: hsl(0, 100%, 40%);">-         msgb_free(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-         return NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+     ass_vec = bitvec_alloc(23, tall_pcu_ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+     if (!ass_vec)</span><br><span style="color: hsl(120, 100%, 40%);">+         goto free_ret;</span><br><span>       bitvec_unhex(ass_vec, DUMMY_VEC);</span><br><span>    LOGPTBF(new_dl_tbf, LOGL_INFO, "start Packet Downlink Assignment (PACCH)\n");</span><br><span style="color: hsl(0, 100%, 40%);">- RlcMacDownlink_t * mac_control_block = (RlcMacDownlink_t *)talloc_zero(tall_pcu_ctx, RlcMacDownlink_t);</span><br><span style="color: hsl(120, 100%, 40%);">+       mac_control_block = (RlcMacDownlink_t *)talloc_zero(tall_pcu_ctx, RlcMacDownlink_t);</span><br><span>         Encoding::write_packet_downlink_assignment(mac_control_block,</span><br><span>                old_tfi_is_valid, m_tfi, (direction == GPRS_RLCMAC_DL_TBF),</span><br><span>          new_dl_tbf, poll_ass_dl, rrbp,</span><br><span>               bts_data()->alpha, bts_data()->gamma, -1, 0,</span><br><span>           is_egprs_enabled());</span><br><span>         LOGP(DTBF, LOGL_DEBUG, "+++++++++++++++++++++++++ TX : Packet Downlink Assignment +++++++++++++++++++++++++\n");</span><br><span style="color: hsl(0, 100%, 40%);">-      encode_gsm_rlcmac_downlink(ass_vec, mac_control_block);</span><br><span style="color: hsl(0, 100%, 40%);">- LOGPC(DCSN1, LOGL_NOTICE, "\n");</span><br><span style="color: hsl(120, 100%, 40%);">+    rc = encode_gsm_rlcmac_downlink(ass_vec, mac_control_block);</span><br><span style="color: hsl(120, 100%, 40%);">+  if (rc < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+              LOGP(DTBF, LOGL_ERROR, "Decoding of Packet Downlink Ass failed (%d)\n", rc);</span><br><span style="color: hsl(120, 100%, 40%);">+                goto free_ret;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span>    LOGP(DTBF, LOGL_DEBUG, "------------------------- TX : Packet Downlink Assignment -------------------------\n");</span><br><span>   bts->pkt_dl_assignemnt();</span><br><span>         bitvec_pack(ass_vec, msgb_put(msg, 23));</span><br><span style="color: hsl(0, 100%, 40%);">-        bitvec_free(ass_vec);</span><br><span style="color: hsl(0, 100%, 40%);">-   talloc_free(mac_control_block);</span><br><span> </span><br><span>  if (poll_ass_dl) {</span><br><span>           set_polling(new_poll_fn, ts, GPRS_RLCMAC_POLL_DL_ASS);</span><br><span>@@ -1297,7 +1298,15 @@</span><br><span> </span><br><span>  }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ bitvec_free(ass_vec);</span><br><span style="color: hsl(120, 100%, 40%);">+ talloc_free(mac_control_block);</span><br><span>      return msg;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+free_ret:</span><br><span style="color: hsl(120, 100%, 40%);">+      bitvec_free(ass_vec);</span><br><span style="color: hsl(120, 100%, 40%);">+ talloc_free(mac_control_block);</span><br><span style="color: hsl(120, 100%, 40%);">+       msgb_free(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+       return NULL;</span><br><span> }</span><br><span> </span><br><span> struct msgb *gprs_rlcmac_tbf::create_packet_access_reject()</span><br><span>@@ -1330,8 +1339,10 @@</span><br><span> </span><br><span> struct msgb *gprs_rlcmac_tbf::create_ul_ass(uint32_t fn, uint8_t ts)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-  struct msgb *msg;</span><br><span style="color: hsl(120, 100%, 40%);">+     struct msgb *msg = NULL;</span><br><span>     struct gprs_rlcmac_ul_tbf *new_tbf = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+    RlcMacDownlink_t *mac_control_block = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+   bitvec *ass_vec = NULL;</span><br><span>      int rc;</span><br><span>      unsigned int rrbp;</span><br><span>   uint32_t new_poll_fn;</span><br><span>@@ -1360,29 +1371,37 @@</span><br><span>      if (!msg)</span><br><span>            return NULL;</span><br><span>         LOGPTBF(new_tbf, LOGL_INFO, "start Packet Uplink Assignment (PACCH)\n");</span><br><span style="color: hsl(0, 100%, 40%);">-      bitvec *ass_vec = bitvec_alloc(23, tall_pcu_ctx);</span><br><span style="color: hsl(0, 100%, 40%);">-       if (!ass_vec) {</span><br><span style="color: hsl(0, 100%, 40%);">-         msgb_free(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-         return NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+     ass_vec = bitvec_alloc(23, tall_pcu_ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+     if (!ass_vec)</span><br><span style="color: hsl(120, 100%, 40%);">+         goto free_ret;</span><br><span>       bitvec_unhex(ass_vec, DUMMY_VEC);</span><br><span>    Encoding::write_packet_uplink_assignment(ass_vec, m_tfi,</span><br><span>             (direction == GPRS_RLCMAC_DL_TBF), tlli(),</span><br><span>           is_tlli_valid(), new_tbf, 1, rrbp, bts_data()->alpha,</span><br><span>             bts_data()->gamma, -1, is_egprs_enabled());</span><br><span>       bitvec_pack(ass_vec, msgb_put(msg, 23));</span><br><span style="color: hsl(0, 100%, 40%);">-        RlcMacDownlink_t * mac_control_block = (RlcMacDownlink_t *)talloc_zero(tall_pcu_ctx, RlcMacDownlink_t);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     mac_control_block = (RlcMacDownlink_t *)talloc_zero(tall_pcu_ctx, RlcMacDownlink_t);</span><br><span>         LOGP(DTBF, LOGL_DEBUG, "+++++++++++++++++++++++++ TX : Packet Uplink Assignment +++++++++++++++++++++++++\n");</span><br><span style="color: hsl(0, 100%, 40%);">-        decode_gsm_rlcmac_downlink(ass_vec, mac_control_block);</span><br><span style="color: hsl(0, 100%, 40%);">- LOGPC(DCSN1, LOGL_NOTICE, "\n");</span><br><span style="color: hsl(120, 100%, 40%);">+    rc = decode_gsm_rlcmac_downlink(ass_vec, mac_control_block);</span><br><span style="color: hsl(120, 100%, 40%);">+  if (rc < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+              LOGP(DTBF, LOGL_ERROR, "Decoding of Packet Uplink Ass failed (%d)\n", rc);</span><br><span style="color: hsl(120, 100%, 40%);">+          goto free_ret;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span>    LOGP(DTBF, LOGL_DEBUG, "------------------------- TX : Packet Uplink Assignment -------------------------\n");</span><br><span>     bts->pkt_ul_assignment();</span><br><span style="color: hsl(0, 100%, 40%);">-    bitvec_free(ass_vec);</span><br><span style="color: hsl(0, 100%, 40%);">-   talloc_free(mac_control_block);</span><br><span> </span><br><span>  set_polling(new_poll_fn, ts, GPRS_RLCMAC_POLL_UL_ASS);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+    bitvec_free(ass_vec);</span><br><span style="color: hsl(120, 100%, 40%);">+ talloc_free(mac_control_block);</span><br><span>      return msg;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+free_ret:</span><br><span style="color: hsl(120, 100%, 40%);">+      bitvec_free(ass_vec);</span><br><span style="color: hsl(120, 100%, 40%);">+ talloc_free(mac_control_block);</span><br><span style="color: hsl(120, 100%, 40%);">+       msgb_free(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+       return NULL;</span><br><span> }</span><br><span> </span><br><span> void gprs_rlcmac_tbf::free_all(struct gprs_rlcmac_trx *trx)</span><br><span>diff --git a/tests/rlcmac/RLCMACTest.cpp b/tests/rlcmac/RLCMACTest.cpp</span><br><span>index f911b09..04c06cf 100644</span><br><span>--- a/tests/rlcmac/RLCMACTest.cpp</span><br><span>+++ b/tests/rlcmac/RLCMACTest.cpp</span><br><span>@@ -93,6 +93,8 @@</span><br><span> void testRlcMacDownlink(void *test_ctx)</span><br><span> {</span><br><span>    printf("*** %s ***\n", __func__);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ int rc;</span><br><span>      struct bitvec *resultVector = bitvec_alloc(23, test_ctx);</span><br><span>    bitvec_unhex(resultVector, DUMMY_VEC);</span><br><span> </span><br><span>@@ -121,11 +123,11 @@</span><br><span>           RlcMacDownlink_t data;</span><br><span>               memset(&data, 0, sizeof(data));</span><br><span>          cout << "=========Start DECODE===========" << endl;</span><br><span style="color: hsl(0, 100%, 40%);">-               decode_gsm_rlcmac_downlink(vector, &data);</span><br><span style="color: hsl(0, 100%, 40%);">-          cout << "+++++++++Finish DECODE++++++++++" << endl;</span><br><span style="color: hsl(120, 100%, 40%);">+             rc = decode_gsm_rlcmac_downlink(vector, &data);</span><br><span style="color: hsl(120, 100%, 40%);">+           cout << "+++++++++Finish DECODE ("<< rc <<")++++++++++" << endl;</span><br><span>                 cout << "=========Start ENCODE=============" << endl;</span><br><span style="color: hsl(0, 100%, 40%);">-             encode_gsm_rlcmac_downlink(resultVector, &data);</span><br><span style="color: hsl(0, 100%, 40%);">-            cout << "+++++++++Finish ENCODE+++++++++++" << endl;</span><br><span style="color: hsl(120, 100%, 40%);">+            rc = encode_gsm_rlcmac_downlink(resultVector, &data);</span><br><span style="color: hsl(120, 100%, 40%);">+             cout << "+++++++++Finish ENCODE ("<< rc <<")+++++++++++" << endl;</span><br><span>                cout << "vector1 = " << osmo_hexdump(vector->data, 23) << endl;</span><br><span>               cout << "vector2 = " << osmo_hexdump(resultVector->data, 23) << endl;</span><br><span>                 if (memcmp(vector->data, resultVector->data, 23) == 0)</span><br><span>@@ -143,6 +145,8 @@</span><br><span> void testRlcMacUplink(void *test_ctx)</span><br><span> {</span><br><span>     printf("*** %s ***\n", __func__);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ int rc;</span><br><span>      struct bitvec *resultVector = bitvec_alloc(23, test_ctx);</span><br><span>    bitvec_unhex(resultVector, DUMMY_VEC);</span><br><span> </span><br><span>@@ -167,11 +171,11 @@</span><br><span>           RlcMacUplink_t data;</span><br><span>                 memset(&data, 0, sizeof(data));</span><br><span>          cout << "=========Start DECODE===========" << endl;</span><br><span style="color: hsl(0, 100%, 40%);">-               decode_gsm_rlcmac_uplink(vector, &data);</span><br><span style="color: hsl(0, 100%, 40%);">-            cout << "+++++++++Finish DECODE++++++++++" << endl;</span><br><span style="color: hsl(120, 100%, 40%);">+             rc = decode_gsm_rlcmac_uplink(vector, &data);</span><br><span style="color: hsl(120, 100%, 40%);">+             cout << "+++++++++Finish DECODE ("<< rc << ")++++++++++" << endl;</span><br><span>                cout << "=========Start ENCODE=============" << endl;</span><br><span style="color: hsl(0, 100%, 40%);">-             encode_gsm_rlcmac_uplink(resultVector, &data);</span><br><span style="color: hsl(0, 100%, 40%);">-              cout << "+++++++++Finish ENCODE+++++++++++" << endl;</span><br><span style="color: hsl(120, 100%, 40%);">+            rc = encode_gsm_rlcmac_uplink(resultVector, &data);</span><br><span style="color: hsl(120, 100%, 40%);">+               cout << "+++++++++Finish ENCODE ("<< rc <<")+++++++++++" << endl;</span><br><span>                cout << "vector1 = " << osmo_hexdump(vector->data, 23) << endl;</span><br><span>               cout << "vector2 = " << osmo_hexdump(resultVector->data, 23) << endl;</span><br><span>                 if (memcmp(vector->data, resultVector->data, 23) == 0)</span><br><span>@@ -188,9 +192,11 @@</span><br><span> void testCsnLeftAlignedVarBmpBounds(void *test_ctx)</span><br><span> {</span><br><span>      printf("*** %s ***\n", __func__);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>        struct msgb *m = msgb_alloc(80, "test");</span><br><span>   static uint8_t exp[] = { 0x7f, 0xff, 0xff, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };</span><br><span>     bitvec *vector = bitvec_alloc(23, test_ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+  int rc;</span><br><span> </span><br><span>  bitvec_unhex(vector, "40200bffd161003e0e519ffffffb800000000000000000");</span><br><span>    RlcMacUplink_t data;</span><br><span>@@ -198,7 +204,8 @@</span><br><span> </span><br><span>       EGPRS_AckNack_Desc_t *urbb =</span><br><span>                 &data.u.Egprs_Packet_Downlink_Ack_Nack.EGPRS_AckNack.Desc;</span><br><span style="color: hsl(0, 100%, 40%);">-  decode_gsm_rlcmac_uplink(vector, &data);</span><br><span style="color: hsl(120, 100%, 40%);">+  rc = decode_gsm_rlcmac_uplink(vector, &data);</span><br><span style="color: hsl(120, 100%, 40%);">+     OSMO_ASSERT(rc == 0);</span><br><span> </span><br><span>    memcpy(msgb_put(m, 13), urbb->URBB, 13);</span><br><span>  if (!msgb_eq_data_print(m, exp, 13))</span><br><span>diff --git a/tests/rlcmac/RLCMACTest.ok b/tests/rlcmac/RLCMACTest.ok</span><br><span>index 5793d57..24ea4b7 100644</span><br><span>--- a/tests/rlcmac/RLCMACTest.ok</span><br><span>+++ b/tests/rlcmac/RLCMACTest.ok</span><br><span>@@ -2,81 +2,81 @@</span><br><span>  DOWNLINK </span><br><span> vector1 = 4e082500e3f1a81d080820800b2b2b2b2b2b2b2b2b2b2b</span><br><span> =========Start DECODE===========</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish DECODE++++++++++</span><br><span>++++++++++Finish DECODE (0)++++++++++</span><br><span> =========Start ENCODE=============</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish ENCODE+++++++++++</span><br><span>++++++++++Finish ENCODE (0)+++++++++++</span><br><span> vector1 = 4e 08 25 00 e3 f1 a8 1d 08 08 20 80 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector2 = 4e 08 25 00 e3 f1 a8 1d 08 08 20 80 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector1 == vector2 : TRUE</span><br><span> vector1 = 48282407a6a07422720100032b2b2b2b2b2b2b2b2b2b2b</span><br><span> =========Start DECODE===========</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish DECODE++++++++++</span><br><span>++++++++++Finish DECODE (0)++++++++++</span><br><span> =========Start ENCODE=============</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish ENCODE+++++++++++</span><br><span>++++++++++Finish ENCODE (0)+++++++++++</span><br><span> vector1 = 48 28 24 07 a6 a0 74 22 72 01 00 03 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector2 = 48 28 24 07 a6 a0 74 22 72 01 00 03 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector1 == vector2 : TRUE</span><br><span> vector1 = 47240c00400000000000000079eb2ac9402b2b2b2b2b2b</span><br><span> =========Start DECODE===========</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish DECODE++++++++++</span><br><span>++++++++++Finish DECODE (0)++++++++++</span><br><span> =========Start ENCODE=============</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish ENCODE+++++++++++</span><br><span>++++++++++Finish ENCODE (0)+++++++++++</span><br><span> vector1 = 47 24 0c 00 40 00 00 00 00 00 00 00 79 eb 2a c9 40 2b 2b 2b 2b 2b 2b </span><br><span> vector2 = 47 24 0c 00 40 00 00 00 00 00 00 00 79 eb 2a c9 40 2b 2b 2b 2b 2b 2b </span><br><span> vector1 == vector2 : TRUE</span><br><span> vector1 = 47283c367513ba333004242b2b2b2b2b2b2b2b2b2b2b2b</span><br><span> =========Start DECODE===========</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish DECODE++++++++++</span><br><span>++++++++++Finish DECODE (0)++++++++++</span><br><span> =========Start ENCODE=============</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish ENCODE+++++++++++</span><br><span>++++++++++Finish ENCODE (0)+++++++++++</span><br><span> vector1 = 47 28 3c 36 75 13 ba 33 30 04 24 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector2 = 47 28 3c 36 75 13 ba 33 30 04 24 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector1 == vector2 : TRUE</span><br><span> vector1 = 400820001a3904df0680efb3300b2b2b2b2b2b2b2b2b2b</span><br><span> =========Start DECODE===========</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish DECODE++++++++++</span><br><span>++++++++++Finish DECODE (0)++++++++++</span><br><span> =========Start ENCODE=============</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish ENCODE+++++++++++</span><br><span>++++++++++Finish ENCODE (0)+++++++++++</span><br><span> vector1 = 40 08 20 00 1a 39 04 df 06 80 ef b3 30 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector2 = 40 08 20 00 1a 39 04 df 06 80 ef b3 30 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector1 == vector2 : TRUE</span><br><span> vector1 = 40284f0000001009810c826f4406809dcecb2b2b2b2b2b</span><br><span> =========Start DECODE===========</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish DECODE++++++++++</span><br><span>++++++++++Finish DECODE (0)++++++++++</span><br><span> =========Start ENCODE=============</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish ENCODE+++++++++++</span><br><span>++++++++++Finish ENCODE (0)+++++++++++</span><br><span> vector1 = 40 28 4f 00 00 00 10 09 81 0c 82 6f 44 06 80 9d ce cb 2b 2b 2b 2b 2b </span><br><span> vector2 = 40 28 4f 00 00 00 10 09 81 0c 82 6f 44 06 80 9d ce cb 2b 2b 2b 2b 2b </span><br><span> vector1 == vector2 : TRUE</span><br><span> vector1 = 4024030f2f0000000087b0042b2b2b2b2b2b2b2b2b2b2b</span><br><span> =========Start DECODE===========</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish DECODE++++++++++</span><br><span>++++++++++Finish DECODE (0)++++++++++</span><br><span> =========Start ENCODE=============</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish ENCODE+++++++++++</span><br><span>++++++++++Finish ENCODE (0)+++++++++++</span><br><span> vector1 = 40 24 03 0f 2f 00 00 00 00 87 b0 04 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector2 = 40 24 03 0f 2f 00 00 00 00 87 b0 04 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector1 == vector2 : TRUE</span><br><span> vector1 = 4913e00850884013a8048b2b2b2b2b2b2b2b2b2b2b2b2b</span><br><span> =========Start DECODE===========</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish DECODE++++++++++</span><br><span>++++++++++Finish DECODE (0)++++++++++</span><br><span> =========Start ENCODE=============</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish ENCODE+++++++++++</span><br><span>++++++++++Finish ENCODE (0)+++++++++++</span><br><span> vector1 = 49 13 e0 08 50 88 40 13 a8 04 8b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector2 = 49 13 01 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector1 == vector2 : FALSE</span><br><span> vector1 = 412430007fffffffffffffffefd19c7ba12b2b2b2b2b2b</span><br><span> =========Start DECODE===========</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish DECODE++++++++++</span><br><span>++++++++++Finish DECODE (0)++++++++++</span><br><span> =========Start ENCODE=============</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish ENCODE+++++++++++</span><br><span>++++++++++Finish ENCODE (0)+++++++++++</span><br><span> vector1 = 41 24 30 00 7f ff ff ff ff ff ff ff ef d1 9c 7b a1 2b 2b 2b 2b 2b 2b </span><br><span> vector2 = 41 24 30 00 7f ff ff ff ff ff ff ff ef d1 9c 7b a1 2b 2b 2b 2b 2b 2b </span><br><span> vector1 == vector2 : TRUE</span><br><span> vector1 = 41942b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b</span><br><span> =========Start DECODE===========</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish DECODE++++++++++</span><br><span>++++++++++Finish DECODE (0)++++++++++</span><br><span> =========Start ENCODE=============</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish ENCODE+++++++++++</span><br><span>++++++++++Finish ENCODE (0)+++++++++++</span><br><span> vector1 = 41 94 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector2 = 41 94 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector1 == vector2 : TRUE</span><br><span>@@ -84,41 +84,41 @@</span><br><span>  UPLINK </span><br><span> vector1 = 400e1e61d11d2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b</span><br><span> =========Start DECODE===========</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish DECODE++++++++++</span><br><span>++++++++++Finish DECODE (0)++++++++++</span><br><span> =========Start ENCODE=============</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish ENCODE+++++++++++</span><br><span>++++++++++Finish ENCODE (0)+++++++++++</span><br><span> vector1 = 40 0e 1e 61 d1 1d 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector2 = 40 0e 1e 61 d1 1d 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector1 == vector2 : TRUE</span><br><span> vector1 = 400b8020000000000000002480e0032b2b2b2b2b2b2b2b</span><br><span> =========Start DECODE===========</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish DECODE++++++++++</span><br><span>++++++++++Finish DECODE (0)++++++++++</span><br><span> =========Start ENCODE=============</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish ENCODE+++++++++++</span><br><span>++++++++++Finish ENCODE (0)+++++++++++</span><br><span> vector1 = 40 0b 80 20 00 00 00 00 00 00 00 24 80 e0 03 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector2 = 40 0b 80 20 00 00 00 00 00 00 00 24 80 e0 03 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector1 == vector2 : TRUE</span><br><span> vector1 = 4016713dc094270ca2ae57ef909006aa0fc0001f80222b</span><br><span> =========Start DECODE===========</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish DECODE++++++++++</span><br><span>++++++++++Finish DECODE (0)++++++++++</span><br><span> =========Start ENCODE=============</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish ENCODE+++++++++++</span><br><span>++++++++++Finish ENCODE (0)+++++++++++</span><br><span> vector1 = 40 16 71 3d c0 94 27 0c a2 ae 57 ef 90 90 06 aa 0f c0 00 1f 80 22 2b </span><br><span> vector2 = 40 16 71 3d c0 94 27 0c a2 ae 57 ef 90 90 06 aa 0f c0 00 1f 80 22 2b </span><br><span> vector1 == vector2 : TRUE</span><br><span> vector1 = 40200ffc0021ec010b2b2b2b2b2b2b2b2b2b2b2b2b2b2b</span><br><span> =========Start DECODE===========</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish DECODE++++++++++</span><br><span>++++++++++Finish DECODE (0)++++++++++</span><br><span> =========Start ENCODE=============</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish ENCODE+++++++++++</span><br><span>++++++++++Finish ENCODE (0)+++++++++++</span><br><span> vector1 = 40 20 0f fc 00 21 ec 01 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector2 = 40 20 0f fc 00 21 ec 01 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b </span><br><span> vector1 == vector2 : TRUE</span><br><span> vector1 = 400a9020000000000000003010012a0800132b2b2b2b2b</span><br><span> =========Start DECODE===========</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish DECODE++++++++++</span><br><span>++++++++++Finish DECODE (0)++++++++++</span><br><span> =========Start ENCODE=============</span><br><span style="color: hsl(0, 100%, 40%);">-+++++++++Finish ENCODE+++++++++++</span><br><span>++++++++++Finish ENCODE (0)+++++++++++</span><br><span> vector1 = 40 0a 90 20 00 00 00 00 00 00 00 30 10 01 2a 08 00 13 2b 2b 2b 2b 2b </span><br><span> vector2 = 40 0a 90 20 00 00 00 00 00 00 00 30 10 01 2a 08 00 13 2b 2b 2b 2b 2b </span><br><span> vector1 == vector2 : TRUE</span><br><span>diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp</span><br><span>index bdbc138..5edb544 100644</span><br><span>--- a/tests/tbf/TbfTest.cpp</span><br><span>+++ b/tests/tbf/TbfTest.cpp</span><br><span>@@ -615,7 +615,7 @@</span><br><span> </span><br><span>       rlc_block = bitvec_alloc(23, tall_pcu_ctx);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- encode_gsm_rlcmac_uplink(rlc_block, ulreq);</span><br><span style="color: hsl(120, 100%, 40%);">+   OSMO_ASSERT(encode_gsm_rlcmac_uplink(rlc_block, ulreq) == 0);</span><br><span>        num_bytes = bitvec_pack(rlc_block, &buf[0]);</span><br><span>     OSMO_ASSERT(size_t(num_bytes) < sizeof(buf));</span><br><span>     bitvec_free(rlc_block);</span><br><span>@@ -2511,6 +2511,7 @@</span><br><span>      RlcMacUplink_t ul_control_block;</span><br><span>     gprs_rlc_v_b *prlcmvb;</span><br><span>       gprs_rlc_dl_window *prlcdlwindow;</span><br><span style="color: hsl(120, 100%, 40%);">+     int rc;</span><br><span> </span><br><span>  memset(&ul_control_block, 0, sizeof(RlcMacUplink_t));</span><br><span> </span><br><span>@@ -2557,7 +2558,8 @@</span><br><span>        bits.data_len = sizeof(bits_data);</span><br><span>   bits.cur_bit = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   decode_gsm_rlcmac_uplink(block, &ul_control_block);</span><br><span style="color: hsl(120, 100%, 40%);">+       rc = decode_gsm_rlcmac_uplink(block, &ul_control_block);</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_ASSERT(rc == 0);</span><br><span> </span><br><span>    ack_nack = &ul_control_block.u.Egprs_Packet_Downlink_Ack_Nack;</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/17086">change 17086</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/+/17086"/><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: Iabcb768bd714680aa768b35c786dea2015d1e451 </div>
<div style="display:none"> Gerrit-Change-Number: 17086 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>