Missing release field/length in MS RA capability container
In case of MS RA Capability container "Content_t", there is no dedicated field to denote the existence of 3GPP release in the message. The encoder goes out of max length allowed for release supported and encodes incorrectly.
Example vector with failure:
vector1 = 40165e000000268ca2a050740440000000300b2b2b2b2b
vector2 = 40165e00000026d0a2a0507400000220000000180b2b2b
vector1 == vector2 : FALSE
For this, we shall have precomputed value of length to terminate the container encoding before calling Content_Dissector in csn1.cpp file. The pre computing length logic routine shall consider the presence of different 3GPP releases.
For example in case of release 5 RA capability message , encoder should be able to code only till release 5 fields . In case of release 6 RA capability, encoder must be able to code till release 6. This release information must be available to the encoder to calculate length. Decoder will set the release field based on the fields present in the message.
Updated by fixeria about 2 years ago
- Assignee deleted (
fixeria, is this still an issue?
I remember we had some problems with encoding of the MS RA Capability, but this is not critical. Decoding is important for the PCU, because it needs to know the MS capabilities, and it seems to work fine. Encoding is not. The only place where we do encoding is the unit test, so unless I am missing something, it's not worth to spend time on that.
Here is what I get with the current master:
vector1 = 40165e000000268ca2a050740440000000300b2b2b2b2b =========Start DECODE=========== +++++++++Finish DECODE (0)++++++++++ =========Start ENCODE============= +++++++++Finish ENCODE (0)+++++++++++ vector1 = 40 16 5e 00 00 00 26 8c a2 a0 50 74 04 40 00 00 00 30 0b 2b 2b 2b 2b vector2 = 40 16 5e 00 00 00 27 0c a2 a0 50 74 00 00 00 00 04 40 00 00 00 30 0b vector1 == vector2 : FALSE