Home > Support > ASN1C 5.8 Change Log

ASN1C v5.8x Change Log

The last production release version of the ASN1C compiler in the version 5.8x series was 5.85. The following changes were made in this release:

  • Fixed encoding of BIT STRING's using DER to adjust bit count to exclude all trailing zero bits. Fix was done for all languages (C, C++, Java, and C#). (PR# ASN-444)
  • Fixed bug in C/C++ PER encoding of small, non-negative whole number when value greater than 63 (i.e. extended case). (PR#ASN-472)
  • Added support for run-time string validation when strict checking is enabled. (PR#000630)
  • Fixed bug in C# code generation when using -depends to ensure that all dependent modules are included. (PR#000626)
  • Fixed bug in C/C++ encoding logic in which condition tests on unsigned numbers greater than INT_MAX were being truncated to their signed value. (PR#000625)
  • Added a secure delete function for BigInteger types to clear the value before passing to the garbage collector (C# only). (PR#000618)

The following changes were made between version 5.84 and 5.83:

  • Fixed min and max constraint code gen for Java and C#. (PR#000614)
  • Added support for strong key name in C#. (PR#000613)
  • Fixed a bug in C/C++ PER decode of dynamic bit string with extensible size constraint when string has length of zero bits. (PR#000606)
  • C/C++ PER code generation. Fix problem in handling extensible constraint in which value range of root or extension is beyond range of a 32-bit integer. (PR#000595)
  • Fixed bug that prevented removing first element from a list with only one item. (PR#000585)
  • Added support to PER decoding for arrays containing 64K elements or more. (PR#000567)
  • Fixed error in C++ BER parser code generation for open type. (PR#000563)

The following changes were made between version 5.83 and 5.82:

  • Replaced use of <ctype.h> with "rtctype.h" (our in-house version of this file) in run-time C/C++ files. This caused backward compatibility issues with some Linux distributions. (PR# 000555)
  • Fixed an error in syntax error reporting in which information on the syntax error was not printed out unless a list buffer existed (this was only the case if -list is added as a command-line option). (PR #000552)
  • Fixed C/C++ XML decoding to avoid adding additional whitespace to decoded information items. (PR# 000549)
  • Fixed XER encoding of carriage return, line feed and tabulation characters to be consistent for all languages. These characters are now left unchanged. (PR# 000548)
  • Fixed bug in PER C#/Java/XSD code generation for INTEGER values with very large value ranges (up to 64 bits unsigned, i.e. 0..9223372036854775799). (PR# 000546)
  • Added /MDd libraries (debug multi-threaded DLL-ready libraries) for all Visual Studio versions. (PR# 000542)
  • Fixed bug in C/C++ PER unaligned encoding of character string with permitted alphabet constraint when number of characters in set falls exactly on a power of 2 boundary (2, 4, 8, 16, 32, etc.). (PR# 000540)
  • Modified reserved word lists for Java and C++. Symbol names are only changed if they are a reserved word in the given language. (PR# 000538).
  • Modified ASN1C GUI file pulldown menus to include the 'All Files *.*' option to allow files with any extension to be selected. (PR# 000537).
  • Modified C++ EncodeTo and DecodeFrom base class methods to return a run-time error if invoked. The error code is "ASN_E_NOTPDU" which indicates that only a PDU type will have an implementation of the required method. Before, functions were returning an OK status but not doing anything which was a cause of confusion. (PR# 000524).
  • Fixed bugs in -depends processing in conjunction with -tables option in which table-constraint information items were not able to be successfully pre-resolved. (PR# 000519).
  • Fixed a crash in C/C++ code caused by calling ASN1MEMFREE followed by rtFreeContext. Modified ASN1MEMFREE macro so that it sets the dynamic buffer (if used) pointer to 0 to avoid a double free later on when the free context function is called . (PR# 000561)

The following changes were made between version 5.80 and 5.81:

  • 64-bit libraries added to all UNIX/Linux evaluation kits.
  • Added logic to add configuration type prefix to generated C/C++ global character set constants. (PR# 000535).
  • Fixed crash in PER C++ decoding of extensible CHOICE. Crash occurred if an extension addition is being decoded and the decoding of the open type fails. The union construct will be left in an indeterminant state and the CHOICE destructor will then try to free the memory held within. (PR# 000534)
  • Fixed a crash that occurred on Solaris Sparc with optimized, gcc compiled run-time. The crash occurred in function xd_uint64 (64-bit unsigned integer decode). (PR# 000533)
  • Fixed a problem in C/C++ BER decoding in which an error was not being reported if mandatory elements were missing from a SEQUENCE or SET construct. (PR# 000531).
  • Fixed a problem in which the extElem1 element which is used for open extensions was being added to generated structures when the -noOpenExt compiler option was selected. (PR# 000530)
  • Fixed problem in XML encoding for Java for SEQUENCE OF constructs when the -compact compiler option is selected. The encoding is being done in XER form where <TypeName> is being inserted as the element tag instead of <element>. (PR# 000529).
  • Fixed problem in which Java XML decode failed when an empty element (i.e <elem/>) existed within a choice construct. (PR# 000528)
  • Added license management logic to the Java library that allows a user to update the run-time key in the library without needing the ASN1C compiler to be installed on the node. (PR# 000527)
  • Fixed bug in C++ BER deferred decoding code generation bug for constructed tag in CHOICE type element. (PR# 000526)
  • Modified C++ EncodeTo and DecodeFrom base class methods to return a run-time error if invoked. The error is a new code - ASN_E_NOTPDU - which indicates that only a PDU type will have an implementation of the required method. This fixed a condition in which nothing was being returned from these methods when not used properly in PDU types. (PR# 000524)
  • Fixed problem in C++ parser code generated with -notypes option. The SEQOF control class constructor still had msgData initialization code (but msgData was not present in the class in this case). (PR# 000523).
  • Fixed problem in C/C++ generated event handlers in which 64-bit integers were not handled correctly. (PR# 000523).
  • Fixed problem in makefile generation in which the makefile was not being generated properly if the -notypes option was used. (PR# 000523)
  • Fixed crash that occurred when encoding ot decoding an absent optional element in C++ DER code generation. (PR# 000522 and 000521).
    Fixed bug in PKCS-7 code generation with -tables option in which an imported class definition (MATCHING-RULE) was not being found. (PR# 000519)
  • Fixed two bugs in C++ ASN1TGeneralizedTime run-time class:
    1) if second's fraction is longer than one digit, then the following 'Z' symbol was not proceeded;
    2) if the second's fraction should have leading zeros (something like 0.00123) then after reencoding these leading zeros were lost (became 0.123).
    (PR# 000515).
  • Fixed problems with type and value constraints applied to enumerated types. In some cases generated code did not compile and in others, PER encodings were not correct. Modified the processing logic to create new enumerated types from the constrained types instead of just adding constraint processing logic to the original type handling code. (PR# 000512)
  • Fixed warnings generated by gcc 3.4 compiler. (PR# 000511)
  • Fixed problem of -depends option being used in conjunction with -config. Problem was productions being dropped from config include list. (PR# 000510).
  • Fixed crash in generated C/C++ XER/XML decoders that occurred when decoding extension sequence type as choice type element. (PR# 000509)
  • Fixed BIT STRING value parsing problem for Java, C# event handler code. Added configuration option for Java and C# BIT STRING to print in Hex, Bits or Asn1Value format. (PR# 000508).
  • Fixed bug in decoding named bit strings with C++ XML encoding rules. (PR# 000505).
  • Added UTF8String default value code generation for C++, Java, C#. (PR# 000504).
  • Fixed BIT STRING type default value code generation problem for C++, Java, C#. (PR# 000503).

The following changes were made between version 5.80 and 5.81:

  • Added support for MS Visual Studio 2005 C, C++, and C# languages for all encoding rules.
  • Modified GUI wizard to not disable event handler selection button when C is selected as language (PR# 000501).
  • Fixed bug in UTF8String constraint code generation in which combination of size constraint with permitted alphabet constraint was causing an "invalid constraint specification" error to be generated at compile time. (PR# 000494)
  • Fixed bug in which -genMake used in conjunction with the -xsd option caused incorrect makefile to be generated. The common .c file was repeated twice in the list of ASN1C files to be generated. (PR# 000488)
  • Added -nodatestamp option to avoid generation of date stamp in generated files (for source control systems). (PR# 000487)
  • Fixed a number of C compiler warnings on VMS platform: INTCONCASTSGN, INTCONCASTTRU, QUESTCOMPARE, UNREACHCODE. Also fixed the warning of LINT on BS_READBYTE macro. (PR# 000486).
  • Added 'small' to C/C++ reserved word list. Is used in MS VC++ compiler and was causing problems in compiling RRC specs. (PR# 000484)
  • Added prototype for rtMemSetDefBlkSize function to rtMemory.h. Also include Doxygen comment on what it does. This is useful for tuning performance when decoding large BER-encoded files. (PR# 000482).
  • Added 64-bit libraries for Linux X86 platform. (PR# 000481).
  • Fixed a bug in which the generated C++ EncodeTo and DecodeFrom methods were incorrect when the options "-c++ -ber -xer -stream" were used. (PR# 000477)
  • Fixed problem with poor performance in Java BER open type decoding. Open type decoding uses Asn1DecodeBuffer.capture which proceeded on octet-by-octet basis. This method was modified to work with chunks instead of single octets. Also, performance of EXTERNAL type decoding was improved. (PR# 000473)
  • Added public setKey method to the C++ ASN1Stream and ASN1MessageBuffer classes to allow run-time key to be set manually when classes are used without compiler generated code. (PR# 000456)
  • Modified build of Java unlimited PER and XER run-time jar files to not contain any BER code which is used for licensing checking in limited versions. (PR# 000455).
  • Modified logic to encode open type to check for numocts == 0 (i.e. empty field). If this is true, an error is reported as the open field cannot be null. If nothing is there, it will cause error when item is decoded. (PR# 000449)