asn1c
asn1c copied to clipboard
INTEGER_decode_aper decode failed for 3GPP 38.473 f1ap ASN
The 3GPP ASN definition as below: MaxDataBurstVolume ::= INTEGER (0..4095, ..., 4096.. 2000000)
When the value is 3000 which was encoded as "00 0B B8" by ASN.1 Studio (https://www.oss.com), but decode by asn1c as "11" (0B), seem our asn1c consider the filed is 2byts as "Can encode 21 (3 bytes) in 2 bits (src/INTEGER_aper.c:68)", but actual it is 3 bytes. Also, wireshark could decode "00 0B B8" as 3000 correctly.
detail debug log as below: Decoding member "maxDataBurstVolume" in NonDynamic5QIDescriptor (src/constr_SEQUENCE_aper.c:130) Decoding NativeInteger MaxDataBurstVolume (APER) (src/NativeInteger_aper.c:21) [PER got 1<=640 bits => span 49 +6[1..640]:00 (639) => 0x0] (src/asn_bit_data.c:139) Integer with range 21 bits (src/INTEGER_aper.c:54) Can encode 21 (3 bytes) in 2 bits (src/INTEGER_aper.c:68) [PER got 2<=639 bits => span 51 +6[3..640]:00 (637) => 0x0] (src/asn_bit_data.c:139) Got length 1 (src/INTEGER_aper.c:75) Aligning 5 bits (src/aper_support.c:13) [PER got 5<=637 bits => span 56 +6[8..640]:00 (632) => 0x0] (src/asn_bit_data.c:139) [PER got 8<=632 bits => span 64 +7[8..632]:0b (624) => 0xb] (src/asn_bit_data.c:139) Got value 11 + low 0 (src/INTEGER_aper.c:91) NativeInteger MaxDataBurstVolume got value 11 (src/NativeInteger_aper.c:38) Freeing INTEGER as a primitive type (src/asn_codecs_prim.c:16)