mouse07410 / asn1c

The ASN.1 Compiler
http://lionet.info/asn1c/
BSD 2-Clause "Simplified" License
94 stars 70 forks source link

Decode expectedUEBehaviour IE failed #139

Open maolala opened 10 months ago

maolala commented 10 months ago
  1. The ASN file i used is in the open5gs github: https://github.com/open5gs/open5gs/blob/main/lib/asn1c/support/ngap-r17.3.0/38413-h30.asn

  2. ASNC1 Compiler is the latest version.

  3. The pcap file is: decode_error.tar.gz

  4. Unit test code snippet

decode_snippet.tar.gz

  1. Error logs:

I am not very familiar with ASN1. I used GDB to analyze and found out that the log printing (Decoding unconstrained integer ExpectedIdlePeriod) when decoding expectedIdlePeriod is different from expectedUEActivityBehaviour,But their definitions in ASN1 are the same.

ExpectedActivityPeriod ::= INTEGER (1..30|40|50|60|80|100|120|150|180|181, ...) ExpectedIdlePeriod ::= INTEGER (1..30|40|50|60|80|100|120|150|180|181, ...)

Here's the full debug log and some log snippet, Sincerely seek help from @mouse07410

fail_log.tar.gz

Member CoreNetworkAssistanceInformationForInactive->expectedUEBehaviour is optional, p=1 (3->4) (src/constr_SEQUENCE_aper.c:110) Decoding member "expectedUEBehaviour" in CoreNetworkAssistanceInformationForInactive (src/constr_SEQUENCE_aper.c:130) Decoding ExpectedUEBehaviour as SEQUENCE (APER) (src/constr_SEQUENCE_aper.c:40)

      [PER got  5<=127 bits => span 94 +11[6..128]:79 (122) => 0x1e] (src/asn_bit_data.c:132)
    Read in presence bitmap for ExpectedUEBehaviour of 5 bits (f0..) (src/constr_SEQUENCE_aper.c:62)
      [PER got  1<= 5 bits => span 1 +0[1..5]:f0 (4) => 0x1] (src/asn_bit_data.c:132)
    Member ExpectedUEBehaviour->expectedUEActivityBehaviour is optional, p=1 (1->5) (src/constr_SEQUENCE_aper.c:110)
    Decoding member "expectedUEActivityBehaviour" in ExpectedUEBehaviour (src/constr_SEQUENCE_aper.c:130)
    Decoding ExpectedUEActivityBehaviour as SEQUENCE (APER) (src/constr_SEQUENCE_aper.c:40)
      [PER got  1<=122 bits => span 95 +11[7..128]:79 (121) => 0x0] (src/asn_bit_data.c:132)
      [PER got  4<=121 bits => span 99 +11[11..128]:79 (117) => 0xe] (src/asn_bit_data.c:132)
    Read in presence bitmap for ExpectedUEActivityBehaviour of 4 bits (e0..) (src/constr_SEQUENCE_aper.c:62)
      [PER got  1<= 4 bits => span 1 +0[1..4]:e0 (3) => 0x1] (src/asn_bit_data.c:132)
    Member ExpectedUEActivityBehaviour->expectedActivityPeriod is optional, p=1 (1->4) (src/constr_SEQUENCE_aper.c:110)
    Decoding member "expectedActivityPeriod" in ExpectedUEActivityBehaviour (src/constr_SEQUENCE_aper.c:130)
    Decoding NativeInteger ExpectedActivityPeriod (APER) (src/NativeInteger_aper.c:21)
      [PER got  1<=117 bits => span 100 +12[4..120]:c0 (116) => 0x0] (src/asn_bit_data.c:132)
    Integer with range 8 bits (src/INTEGER_aper.c:54)
    Aligning 4 bits (src/aper_support.c:13)
      [PER got  4<=116 bits => span 104 +12[8..120]:c0 (112) => 0x0] (src/asn_bit_data.c:132)
      [PER got  8<=112 bits => span 112 +13[8..112]:e0 (104) => 0xe0] (src/asn_bit_data.c:132)
    Got value 225 + low 1 (src/INTEGER_aper.c:114)
    NativeInteger ExpectedActivityPeriod got value 225 (src/NativeInteger_aper.c:37)
    Freeing INTEGER as a primitive type (src/asn_codecs_prim.c:16)
      [PER got  1<= 3 bits => span 2 +0[2..4]:e0 (2) => 0x1] (src/asn_bit_data.c:132)
    Member ExpectedUEActivityBehaviour->expectedIdlePeriod is optional, p=1 (2->4) (src/constr_SEQUENCE_aper.c:110)
    Decoding member "expectedIdlePeriod" in ExpectedUEActivityBehaviour (src/constr_SEQUENCE_aper.c:130)
    Decoding NativeInteger ExpectedIdlePeriod (APER) (src/NativeInteger_aper.c:21)
      [PER got  1<=104 bits => span 113 +14[1..104]:e8 (103) => 0x1] (src/asn_bit_data.c:132)
    **Decoding unconstrained integer ExpectedIdlePeriod** (src/INTEGER_aper.c:122)
    Aligning 7 bits (src/aper_support.c:13)
      [PER got  7<=103 bits => span 120 +14[8..104]:e8 (96) => 0x68] (src/asn_bit_data.c:132)
      [PER got  8<=96 bits => span 128 +15[8..96]:a8 (88) => 0xa8] (src/asn_bit_data.c:132)
      [PER got  8<=88 bits => span 136 +0[8..88]:20 (80) => 0x20] (src/asn_bit_data.c:132)
      [PER got 24<=80 bits => span 160 +1[24..80]:64 (56) => 0x64f011] (src/asn_bit_data.c:132)
      [PER got 24<=56 bits => span 184 +4[24..56]:0b (32) => 0xb3309] (src/asn_bit_data.c:132)
      [PER got 24<=32 bits => span 208 +7[24..32]:02 (8) => 0x21003] (src/asn_bit_data.c:132)
    Freeing INTEGER as a primitive type (src/asn_codecs_prim.c:16)
    **Failed decode expectedIdlePeriod in ExpectedUEActivityBehaviour** (src/constr_SEQUENCE_aper.c:145)
    Failed decode expectedUEActivityBehaviour in ExpectedUEBehaviour (src/constr_SEQUENCE_aper.c:145)
    Failed decode expectedUEBehaviour in CoreNetworkAssistanceInformationForInactive (src/constr_SEQUENCE_aper.c:145)
Freeing CoreNetworkAssistanceInformationForInactive as SEQUENCE (src/constr_SEQUENCE.c:76)
mouse07410 commented 8 months ago

Sorry, this is probably to complex for me to debug. All I can say at the moment is that there were a couple of fixes to APER, so perhaps the current vlm_master would behave correctly on open5gs. Please give it another try if you can.