<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/17086">View Change</a></p><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, 116 insertions(+), 70 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/86/17086/1</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..943e4a3 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 Tx 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 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..747d51f 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 Tx 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 Tx 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..926400b 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%);">+ 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..4d9dff2 100644</span><br><span>--- a/tests/tbf/TbfTest.cpp</span><br><span>+++ b/tests/tbf/TbfTest.cpp</span><br><span>@@ -43,6 +43,7 @@</span><br><span> }</span><br><span> </span><br><span> #include <errno.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <assert.h></span><br><span> </span><br><span> #define DUMMY_FN 2654167</span><br><span> </span><br><span>@@ -615,7 +616,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 +2512,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 +2559,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%);">+ 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: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>