csn1: Fix readIndex pointer change in CSN_VARIABLE_ARRAY

There's actually 3 errors:
* Its value should be updated, not the pointer itself
* Value should be increased, not decreased
* bitvec_read_field() API is already advancing it, no need to do it

Fixes: OS#4838
Change-Id: I009abc373794e148091e637ffee80c6461960945
This commit is contained in:
Pau Espin 2020-11-23 17:57:35 +01:00
parent 9c4f9ffec1
commit 259a694ba7
4 changed files with 11 additions and 1 deletions

View File

@ -1216,7 +1216,6 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, struct bitvec *vector
while (count > 0)
{
readIndex -= 8;
*pui8 = bitvec_read_field(vector, readIndex, 8);
LOGPC(DCSN1, LOGL_DEBUG, "%s = %u | ", pDescr->sz , (unsigned)*pui8);
pui8++;

View File

@ -110,6 +110,7 @@ void testRlcMacDownlink(void *test_ctx)
"4913e00850884013a8048b2b2b2b2b2b2b2b2b2b2b2b2b", // Polling Request (malformed)
"412430007fffffffffffffffefd19c7ba12b2b2b2b2b2b", // Packet Uplink Ack Nack?
"41942b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b", // System Info 13?
"40883c1493120000000012002b2b2b2b2b2b2b2b2b2b2b", // Pkt Paging Request (OS#4838)
};
int testDataSize = sizeof(testData)/sizeof(testData[0]);

View File

@ -18,6 +18,8 @@ DCSN1 INFO csnStreamDecoder (type: Pkt UL ACK/NACK (9): MESSAGE_TYPE = 9 | PAGE_
DCSN1 INFO csnStreamEncoder (type: Pkt UL ACK/NACK (9)): MESSAGE_TYPE = 9 | PAGE_MODE = 0 | 0x00 = 0 | UPLINK_TFI = 24 | u.PU_AckNack_GPRS_Struct = 0 | : u.PU_AckNack_GPRS_Struct | CHANNEL_CODING_COMMAND = 0 | : Ack_Nack_Description | FINAL_ACK_INDICATION = 0 | STARTING_SEQUENCE_NUMBER = 1 | RECEIVED_BLOCK_BITMAP[0] = 255 | RECEIVED_BLOCK_BITMAP[1] = 255 | RECEIVED_BLOCK_BITMAP[2] = 255 | RECEIVED_BLOCK_BITMAP[3] = 255 | RECEIVED_BLOCK_BITMAP[4] = 255 | RECEIVED_BLOCK_BITMAP[5] = 255 | RECEIVED_BLOCK_BITMAP[6] = 255 | RECEIVED_BLOCK_BITMAP[7] = 255 | : End Ack_Nack_Description | Common_Uplink_Ack_Nack_Data.Exist_CONTENTION_RESOLUTION_TLLI = 1 | Common_Uplink_Ack_Nack_Data.CONTENTION_RESOLUTION_TLLI = 2123162589 | Common_Uplink_Ack_Nack_Data.Exist_Packet_Timing_Advance = 0 | Common_Uplink_Ack_Nack_Data.Exist_Power_Control_Parameters = 0 | Common_Uplink_Ack_Nack_Data.Exist_Extension_Bits = 0 | u.FixedAllocationDummy = 0 | u.FixedAllocationDummy = 1 | Exist_AdditionsR99 = 0 | : End u.PU_AckNack_GPRS_Struct | Padding = 43|43|43|43|43|43|
DCSN1 INFO csnStreamDecoder (type: Pkt DL Dummy Ctrl Block (37): MESSAGE_TYPE = 37 | PAGE_MODE = 0 | Exist_PERSISTENCE_LEVEL = 0 | Padding = 43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|
DCSN1 INFO csnStreamEncoder (type: Pkt DL Dummy Ctrl Block (37)): MESSAGE_TYPE = 37 | PAGE_MODE = 0 | Exist_PERSISTENCE_LEVEL = 0 | Padding = 43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|
DCSN1 INFO csnStreamDecoder (type: Pkt Paging Request (34): MESSAGE_TYPE = 34 | PAGE_MODE = 0 | Exist_PERSISTENCE_LEVEL = 0 | Exist_NLN = 0 | Repeated_Page_info = Exist | u.Page_req_RR = 1 | : u.Page_req_RR | u.Mobile_Identity = 1 | : u.Mobile_Identity | Length_of_Mobile_Identity_contents = 8 | Mobile_Identity = 41 | Mobile_Identity = 38 | Mobile_Identity = 36 | Mobile_Identity = 0 | Mobile_Identity = 0 | Mobile_Identity = 0 | Mobile_Identity = 0 | Mobile_Identity = 36 | : End u.Mobile_Identity | CHANNEL_NEEDED = 0 | Exist_eMLPP_PRIORITY = 0 | : End u.Page_req_RR | Repeated_Page_info = 0 | Padding = 0|43|43|43|43|43|43|43|43|43|43|43|
DCSN1 INFO csnStreamEncoder (type: Pkt Paging Request (34)): MESSAGE_TYPE = 34 | PAGE_MODE = 0 | Exist_PERSISTENCE_LEVEL = 0 | Exist_NLN = 0 | Repeated_Page_info = 1 | u.Page_req_RR = 1 | : u.Page_req_RR | u.Mobile_Identity = 1 | : u.Mobile_Identity | Length_of_Mobile_Identity_contents = 8 | Mobile_Identity = 41 | Mobile_Identity = 38 | Mobile_Identity = 36 | Mobile_Identity = 0 | Mobile_Identity = 0 | Mobile_Identity = 0 | Mobile_Identity = 0 | Mobile_Identity = 36 | : End u.Mobile_Identity | CHANNEL_NEEDED = 0 | Exist_eMLPP_PRIORITY = 0 | : End u.Page_req_RR | Repeated_Page_info = 0 | Padding = 3|43|43|43|43|43|43|43|43|43|43|43|
DCSN1 INFO csnStreamDecoder (type: Pkt UL Dummy Ctrl Block (3)): PayloadType = 1 | spare = 0 | R = 0 | MESSAGE_TYPE = 3 | TLLI = 0x87987447 | Padding = 1|43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|
DCSN1 INFO csnStreamEncoder (type: Pkt UL Dummy Ctrl Block (3)): PayloadType = 1 | spare = 0 | R = 0 | MESSAGE_TYPE = 3 | TLLI = 2274915399 | Padding = 1|43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|43|
DCSN1 INFO csnStreamDecoder (type: Pkt DL ACK/NACK (2)): PayloadType = 1 | spare = 0 | R = 0 | MESSAGE_TYPE = 2 | DOWNLINK_TFI = 28 | : Ack_Nack_Description | FINAL_ACK_INDICATION = 0 | STARTING_SEQUENCE_NUMBER = 1 | RECEIVED_BLOCK_BITMAP[0] = 0 | RECEIVED_BLOCK_BITMAP[1] = 0 | RECEIVED_BLOCK_BITMAP[2] = 0 | RECEIVED_BLOCK_BITMAP[3] = 0 | RECEIVED_BLOCK_BITMAP[4] = 0 | RECEIVED_BLOCK_BITMAP[5] = 0 | RECEIVED_BLOCK_BITMAP[6] = 0 | RECEIVED_BLOCK_BITMAP[7] = 1 | : End Ack_Nack_Description | Exist_Channel_Request_Description = 0 | : Channel_Quality_Report | C_VALUE = 18 | RXQUAL = 0 | SIGN_VAR = 7 | Slot[0].Exist = 0 | Slot[1].Exist = 0 | Slot[2].Exist = 0 | Slot[3].Exist = 0 | Slot[4].Exist = 0 | Slot[5].Exist = 0 | Slot[6].Exist = 0 | Slot[7].Exist = 0 | : End Channel_Quality_Report | Exist_AdditionsR99 = 0 | Padding = 3|43|43|43|43|43|43|43|43|

View File

@ -80,6 +80,14 @@ vector1 = 41942b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
vector1 = 41 94 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
vector2 = 41 94 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
vector1 == vector2 : TRUE
vector1 = 40883c1493120000000012002b2b2b2b2b2b2b2b2b2b2b
=========Start DECODE===========
+++++++++Finish DECODE (0)++++++++++
=========Start ENCODE=============
+++++++++Finish ENCODE (0)+++++++++++
vector1 = 40 88 3c 14 93 12 00 00 00 00 12 00 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
vector2 = 40 88 3c 14 93 12 00 00 00 00 12 01 95 95 95 95 95 95 95 95 95 95 95
vector1 == vector2 : FALSE
*** testRlcMacUplink ***
UPLINK
vector1 = 400e1e61d11d2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b