Commit Graph

2440 Commits

Author SHA1 Message Date
Lev Walkin e5f0d94aa9 preserve rmax for fuzzer 2017-10-24 00:59:32 -07:00
Lev Walkin 9175a28a5a deprecate EMIT_ASN_DEBUG, move under ASN_ namespace 2017-10-24 00:58:42 -07:00
Lev Walkin 5615304c9a api change uper_encode() 2017-10-24 00:47:03 -07:00
Lev Walkin cb59ce69a8 library name change 2017-10-24 00:05:11 -07:00
Lev Walkin 005f8799b1 abstract out sorting 2017-10-23 23:15:51 -07:00
Lev Walkin b2219ac657 remove debug 2017-10-23 22:18:41 -07:00
Lev Walkin ddac40017f mask PER 2017-10-23 22:15:53 -07:00
Lev Walkin 3ca48b9168 readme fix 2017-10-21 22:00:00 -07:00
Lev Walkin b1d4102cd3 clarifying comment 2017-10-21 21:58:50 -07:00
Lev Walkin 9f470d60fa stop ignoring formatting problems, start ignoring long long extension problems 2017-10-21 16:27:08 -07:00
Lev Walkin df2edbbd15 regenerated 2017-10-21 13:40:07 -07:00
Lev Walkin d2a7360685 bound the size of SEQUENCE OF and SET OF random generator 2017-10-21 13:14:51 -07:00
Lev Walkin 62155df04d add stack overflow protection for SEQUENCE and SEQUENCE OF 2017-10-21 01:16:17 -07:00
Lev Walkin 3c37385d29 fix OER comparison API 2017-10-21 01:09:13 -07:00
Lev Walkin 836686167d fix after UPER round-trip fuzz 2017-10-21 00:24:31 -07:00
Lev Walkin 5de8274266 fix UPER BIT STRING trailer encoding 2017-10-20 23:12:09 -07:00
Lev Walkin ba2c5727d0 more debug 2017-10-20 23:09:45 -07:00
Lev Walkin 1418d985cb verify unusual PER canonical order 2017-10-20 17:27:29 -07:00
Bi-Ruei, Chiu bc6ef1f98a Add two tests in tests-asn1c-compiler directory 2017-10-20 17:15:57 -07:00
Bi-Ruei, Chiu e460c3b7a3 Fix error during 'make check' 2017-10-20 17:15:57 -07:00
Bi-Ruei, Chiu 156b0feb5c Fix duplication of selector functions
There will be two selector functions generated for the following ASN.1 excerpt.

InitiatingMessage ::= SEQUENCE {
    procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode     ({S1AP-ELEMENTARY-PROCEDURES}),
    criticality   S1AP-ELEMENTARY-PROCEDURE.&criticality       ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
    value         S1AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}

This pull request enables different function names by adding field name after type name.
2017-10-20 17:15:57 -07:00
Bi-Ruei, Chiu dcc822a090 Fix duplicate type names generated in headers file
For example, there are many 'enum value_PR' and 'struct value' generated if
a class is instantiated as many instances.

typedef enum value_PR {
    value_PR_NOTHING,    /* No components present */
    .....
} value_PR;

typedef struct ProtocolIE_Field_6563P5 {
    ....
    struct value {
        value_PR present;
        union value_u {
        } choice;

        /* Context for parsing across buffer boundaries */
        asn_struct_ctx_t _asn_ctx;
    } value;

    /* Context for parsing across buffer boundaries */
    asn_struct_ctx_t _asn_ctx;
} ProtocolIE_Field_6563P5_t;
2017-10-20 17:15:57 -07:00
Bi-Ruei, Chiu 3e2de6960b Solve the problem that information object table with one entry can not be properly handled
E-RABToBeSetupItemBearerSUReqIEs S1AP-PROTOCOL-IES ::= {
    { ID id-E-RABToBeSetupItemBearerSUReq   CRITICALITY reject	TYPE E-RABToBeSetupItemBearerSUReq	PRESENCE mandatory },
    ...
}

result in 'FATAL: Information Object Set E-RABToBeSetupItemBearerSUReqIEs contains no objects at line xxxx'

If it contains more than one entry then there is no problem.

E-RABSetupRequestIEs S1AP-PROTOCOL-IES ::= {
    { ID id-MME-UE-S1AP-ID                  CRITICALITY reject  TYPE MME-UE-S1AP-ID                     PRESENCE mandatory }|
    { ID id-eNB-UE-S1AP-ID                  CRITICALITY reject  TYPE ENB-UE-S1AP-ID                     PRESENCE mandatory }|
    { ID id-uEaggregateMaximumBitrate       CRITICALITY reject  TYPE UEAggregateMaximumBitrate          PRESENCE optional  }|
    { ID id-E-RABToBeSetupListBearerSUReq   CRITICALITY reject  TYPE E-RABToBeSetupListBearerSUReq      PRESENCE mandatory },
    ...
}
2017-10-20 17:15:57 -07:00
Bi-Ruei, Chiu 214c491951 Pass evaluated arguments to members and type references
One of the most tricky ASN.1 excerpt :

E-RABDataForwardingItemIEs S1AP-PROTOCOL-IES ::= {
    { ID id-E-RABDataForwardingItem   CRITICALITY ignore   TYPE E-RABDataForwardingItem PRESENCE mandatory },
    ...
}

E-RABSubjecttoDataForwardingList ::= E-RAB-IE-ContainerList { {E-RABDataForwardingItemIEs} }

E-RAB-IE-ContainerList { S1AP-PROTOCOL-IES : IEsSetParam } ::=
    ProtocolIE-ContainerList { 1, maxnoofE-RABs, {IEsSetParam} }

ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, S1AP-PROTOCOL-IES : IEsSetParam} ::=
    SEQUENCE (SIZE (lowerBound..upperBound)) OF
    ProtocolIE-SingleContainer {{IEsSetParam}}

ProtocolIE-SingleContainer {S1AP-PROTOCOL-IES : IEsSetParam} ::=
    ProtocolIE-Field {{IEsSetParam}}

ProtocolIE-Field {S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
    id          S1AP-PROTOCOL-IES.&id           ({IEsSetParam}),
    criticality S1AP-PROTOCOL-IES.&criticality  ({IEsSetParam}{@id}),
    value       S1AP-PROTOCOL-IES.&Value        ({IEsSetParam}{@id})
}
2017-10-20 17:15:57 -07:00
Bi-Ruei, Chiu 89cde74d4a Supply meaningful data for last %d argument of DEBUG() 2017-10-20 17:15:57 -07:00
Bi-Ruei, Chiu b6bd8d788b Use parenthesis to avoid ambiguity of operator precedence 2017-10-20 17:15:57 -07:00
Bi-Ruei, Chiu 742a196624 Fix 'FATAL: Does not look like criticality is a CLASS field reference (xxxx) denoting a type one line xxx' 2017-10-20 17:15:57 -07:00
Bi-Ruei, Chiu 069c07657e Fix crash during dealing with empty optinal fields of ioc cell 2017-10-20 17:15:57 -07:00
Bi-Ruei, Chiu aeff717baf Fix unrecognized value type for reject/ignore
In Module_1,

	Criticality ::= ENUMERATED { reject, ignore, notify }

In Module_2,

	IMPORTS
		Criticality
	FROM Module_1

		someMessage SOME-CLASS ::= {
			CRITICALITY	ignore
		}

This pull request add the capability to resolve 'reject', 'ignore' and 'notify'
in Module_2.
2017-10-20 17:15:57 -07:00
Bi-Ruei, Chiu 50934ba3d4 Fix 'Information Object Set XXX contains no objects' when parsing S1AP's ASN.1
The aforementioned error message displayed during processing the following ASN.1 excerpt.

S1AP-ELEMENTARY-PROCEDURES S1AP-ELEMENTARY-PROCEDURE ::= {
    S1AP-ELEMENTARY-PROCEDURES-CLASS-1 |
    S1AP-ELEMENTARY-PROCEDURES-CLASS-2,
    ...
}

S1AP-ELEMENTARY-PROCEDURES-CLASS-1 S1AP-ELEMENTARY-PROCEDURE ::= {
    handoverPreparation                |
...
    writeReplaceWarning,
    ...,
    uERadioCapabilityMatch             |
....
    uEContextResume
}

S1AP-ELEMENTARY-PROCEDURES-CLASS-2 S1AP-ELEMENTARY-PROCEDURE ::= {
    handoverNotification               |
...
    privateMessage,
    ...,
    downlinkUEAssociatedLPPaTransport  |
...
    mMECPRelocationIndication
}

Because S1AP-ELEMENTARY-PROCEDURES-CLASS-1 and S1AP-ELEMENTARY-PROCEDURES-CLASS-2
are resolved 'after' S1AP-ELEMENTARY-PROCEDURES, so the ioc tables of them are not
available during resolving S1AP-ELEMENTARY-PROCEDURES. So we can not drop the
latter's containedSubtype field at first pass of asn1f_resolve_constraints of fix
process.

We also add second pass of asn1f_resolve_constraints to have a chance to combine
ioc tables of S1AP-ELEMENTARY-PROCEDURES-CLASS-1 and
S1AP-ELEMENTARY-PROCEDURES-CLASS-2.
2017-10-20 17:15:57 -07:00
Lev Walkin 4e5edcf063 temporarily mask unfinished tests 2017-10-20 04:28:20 -07:00
Lev Walkin 6bc5696f52 fix consrtaint propagation for random_fill 2017-10-20 04:19:37 -07:00
Lev Walkin d14802fa0f fix OER SEQUENCE decode memory leak 2017-10-20 03:51:21 -07:00
Lev Walkin 9d328eec0a use oer guara 2017-10-20 03:51:21 -07:00
Lev Walkin 42f6c88018 fix OER NULL and SEQUENCE extensions round-trip 2017-10-20 03:22:51 -07:00
Lev Walkin a460cbd13e verify ASN.1 syntax prior to a lengthy run through a bundle 2017-10-20 02:18:04 -07:00
Lev Walkin 130cffe9a9 add options to readme 2017-10-19 04:18:12 -07:00
Lev Walkin 312e3e0f96 remove gcc compiler warnings 2017-10-19 03:49:50 -07:00
Lev Walkin 1d2a6e8b3f allow fully default flags for distcheck 2017-10-19 03:45:21 -07:00
Lev Walkin 435469ec33 remove gcc compiler warnings 2017-10-19 03:39:32 -07:00
Lev Walkin c547661e3c no default 32-bit test on travis, no 32-bit libasan there 2017-10-19 03:36:09 -07:00
Lev Walkin b1f4f33ae6 remove gcc-7 compiler warnings 2017-10-19 03:28:49 -07:00
Lev Walkin 0afbd325f3 detect leak detector in runtime 2017-10-19 03:21:21 -07:00
Lev Walkin 48e82d1f1f removed gcc-7 warnings 2017-10-19 03:07:27 -07:00
Lev Walkin b2d896e4d9 verify that undefined sanitizer can be linked in 2017-10-19 09:50:20 +00:00
Lev Walkin bc09dd4845 generate constraints differently to avoid warnings 2017-10-19 02:16:35 -07:00
Lev Walkin 4bd9eaf7e1 force use variable 2017-10-19 01:16:42 -07:00
Lev Walkin 0a3bf61d0d do not --enable-test-32bit by default 2017-10-19 00:34:47 -07:00
Lev Walkin 1fef87a46f linkability check for ASAN and UBSAN 2017-10-19 00:25:18 -07:00
Lev Walkin 03531df897 stronger detection of fuzzing infrastructure (linkability) 2017-10-19 00:25:18 -07:00