Objective Systems, Inc.  
Home
About ASN.1
Products
Web Tools
Open Source
Documents
Services
Resources
Resellers
Customers
Careers
About Us
Contact Us
 
 
 
Objective Systems, Inc.
Objective Systems, Inc.
Real World ASN.1 and XML Solutions

ASN1C Release Information

The current production release version of the ASN1C compiler is 5.75. The following changes have been made since the last patch release (5.74):

Fixed bug Java BER message dump logic. If message contains indefinite lengths with EOCs then the generated dump is incorrect (EOCs were just ignored and offset was calculated incorrectly). (PR# 000382)
Fixed bug in C/C++ streamed BER decode logic generation. If an element is a SEQUENCE with no elements (empty) and is encoded with indefinite length, then the code with matching EOC was generated incorrectly. (PR# 000377)
Modified logic to generate rtkey.h file to always generate file, even if license is unlimited. It is necessary to fix problem when user has unlimited license but wants to use limited SDK libraries. (PR# 000376)
Fixed performance issue in C/C++ PER encoding logic. Performance was found to be worse then earlier ASN1C versions. Reason was repeated checking of an environment variable which was not necessary. (PR# 000375)
Fixed bug in C XER/XML code generation. If element has name "unknown" then the generated names table *_ElementIDs contains duplicate *_unknown_ID name (because *_unknown_ID is added automatically); changed to *__unknown_ID. (PR# 000374)
Fixed problem with generated SAX code for C XML/XER: if an element of SEQOF/SETOF is forward-referenced then the element's SAX handler was referenced incorrectly. This caused C compilation errors. (PR# 000373)
Fixed bug in generation of import statements for compact Java code generation. (PR# 000372).
Fixed C# compact runtime library link error with Octet String type generated code. Constructor for string value was missing. (PR# 000371).
Fixed bug in Java code generation for BER indefinite length decoding. (PR# 000367)
Fixed bug in which incorrect BER decode C/C++ code was generated for SEQ OF/SET OF in the case events handlers were used. In this case the returned status from the generated decode function call inside the loop was not tested and imay cause infinite loop. (PR# 000366)
Fixed bug in encoding of XML character data in Java & C#: if character data contains '<', '&', etc then these symbols MUST be escaped as "&", "<", etc. Otherwise, encoded XML file is not well-formed. (PR# 000361)
Fixed bug in the C/C++ decode logic generated for invocation of event handlers for optional elements. All handler callbacks for the element (startElement, data, and endElement) should not be called if the element is not present. endElement was being invoked in some situations. (PR# 000344).
Modified C# event handler code generation to invoke a second callback on open type items with real type name when table constraint decoding was done. (PR# 000331).
Fixed Java and C# PER code generation bug for Integer type with value range constraint union/set. (for example: TGD::=INTEGER (0|15..269)). (PR# 000319 and 000325).
Fixed bug in which C/C++ compilation of application with -D_COMPACT option did not work correctly. (PR# 000320).
Fixed bug in C/C++ code generation. If -cfile option is used with -prtToStr, compiler was not adding #include "rtPrintToString.h" to the generated C file. (PR# 000302).
Bug in Java and C# generated BER decoding logic. If open type is encoded with indefinite length then the last open type's EOC was not parsed at all and further decoding failed. (PR#000300 and 000301).
Fixed bug is which error count was not reported correctly by compiler. Generation of common C/C++ files contained errors but compiler said compilation was successful. (PR# 000297).
Fixed C/C++ code generation bug for NamedInteger and Enumerated type with max 32-bit unsigned integer value of named variable. e.g. Type ::= INTEGER { min(0), max(4294967295)} -- 4294967295 had problem. (PR# 000294)
Fixed bug in BER C/C++, stream code generation. If option -static is used in conjuction with -stream and -ber, then the generated code for decoding of extension elements is incorrect. 'ASN1OpenType extElem' is generated instead of 'ASN1OpenType *extElem' in header file, but the decode logic is still generated like extElem1 is a pointer. (PR# 000292)
Fixed bug in XSD code generation for INTEGER type with extensible size constraint. e.g. ( 0..255,...). (PR# 000289).
Fixed bug in XSD code generation in which C/C++ reserved names were being altered with underscores. Name for XSD should not be changed. (PR# 000288).
Fixed bug in C# compact code generation (-compact) in which classes were not being generated for PDU types in certain situations. (PR #000286)

The following changes were made between v5.74 and v5.73:

Fixed bug in Java compact code generation (-compact) in which classes were not being generated for PDU types in certain situations. (PR #000285)
Fixed errors in setting type code in C# and Java event handlers. (PR #000281, #000265, #000264, #000263).
Fixed memory leak in C/C++ limited run-time that occured in license check routine. (PR #000271).
Modified C/C++ BER decode tag match functions to not log an error if a tag match on an optional element fails. (PR #000269).
Updated documented procedure for decoding a series of messages in a loop in the ASN1C C/C++ User's Guide. (PR# 000266).
Changed use of backward slash "\" to forward slash "/" in C# filename to support C# code generation on Linux platform. (PR# 000262).
Fixed C/C++ makefile generation logic (-genmake) to include Asn1External / Asn1EmbeddedPDV files in the list of files when they are generated. (PR #000259).
Fixed generation of C/C++ free functions to check for null pointers in functions in places where members in a structure are freed. This was needed because it was possible for these functions to be invoked with partially decoded messages following a decode error. (PR #000258).
Capability to print to string was added for C# code generation (Changed Print() function base class to TextWriter from StreamWriter) . (PR#000257).
Fixed bug in C/C++ code generation for SEQUENCE type with { RootElementGroup ExtensionElementGroup RootElementGroup } elements. This caused the CSTA Phase III API to not work correctly. (PR #000254).
C libraries compiled with the IBM xlc compiler were added to the AIX package (before, only gcc-compiled C libraries were available). Also 'xlc64' and 'xlC64' targets were added to provide 64-bit libraries for AIX (NOTE: these libraries will work ONLY on AIX 4.x, they are not compatible with AIX 5). (PR# 000247).
Fixed C# and Java code generation for explicitly referenced types (i.e. references of form <ModuleName>.<TypeName>). (PR# 000245, #000244).
Fixed bug in which constraint checks were not being done in Java on SEQUENCE OF / SET OF fields with size constraints. (PR# 000238).
Fixed bug in which Java compilation of generated encode method was failing in the case of a type that has a constraint but is not tagged. For example:
CountExtentType ::= IntegerOrNullList (SIZE(2))
(PR# 000237).
Fixed infinite loop in compiler which occurs on definitions such as the following:
Decimal ::= XSD.Decimal
(PR# 000236).
Fixed bug in XML encoding in which SEQUENCE OF/SET OF OCTET STRING was being encoded as space-separated list (C/C++/Java/C#). (PR# 000221)
Fixed documentation on C/C++ type used for extensibility fields (...) in ASN1C C/C++ User's Guide. Was incorrectly indicating type was Asn1OpenType when in fact Asn1RTDList was used (list of Asn1OpenType). (PR# 000217)
Fixed bug in XER/XML code generation for OPERATION/ERROR macro elements. (PR# 000216).
Fixed bug in Java Asn1Time.setTime method - daylight saving time offset was not taken into account when diffTime is calculated, it led to incorrect Generalized and UTC Time strings. (PR# 000215)
 

The following changes were made between v5.73 and v5.72:

Version 5.73 package upgraded to contain C/C++ .NET DLL's for both the 2002 and 2003 versions of .NET (previously, only 2002 DLL's were included). Also, both debug and release DLL's are included (previously, only release DLL's were included).
Installation of C/C++ deployment run-time libraries was changed to install libraries in lib_opt subdirectory instead of overwriting SDK libraries in lib subdirectory.
Fixed bug in BER decoding in detecting out-of-order elements within SEQUENCE constructs. Changes done for all languages (C/C++, Java, C#). (PR #000205, 000204, 000203, 000172, 000171)
Added code generation for C and C++ writer and reader programs for streaming BER. Previously, -genwriter -genreader -ber -stream generated incorrect code for reader/writer. (PR #000202)
OSCSocket/OSCSocketStream/ASN1BERSocketStream classes updated to fix socket ownership problems. OSCSocket by default is responsible to close the socket, streams do not close the socket connection. (PR# 000201)
Fixed bug in C/C++ run-time in which berDecStrmMatchTag function was not filling in error parameters on unexpected tag error condition. (PR# 000200)
Modified C/C++ test code generation logic to populate character string variables using direct assignment of string literal values instead of memory allocation and copy.
Fixed bug in C/C++ test code generation logic in which memory was not being allocated for dynamic array elements in some cases. (PR# 000197)
Fixed problem of slow decoding of Asn1External/Embedded types in Java. Generated code was changed to use a StringBuffer class instead of String. (PR# 000190)
Fixed problem in C/C++ BER code generation in which a crash sometimes occurred when rtNewContext was used to allocate a context and an open type was encoded within the generated code. (PR #000189)
Fixed problem in which run-time license binary data file (acv57lic.dat) was not working with C++ version of library. (PR# 000187)
Fixed bug in Java and C# PER decode logic in which unaligned BIT, OCTET, and UTF-8 strings were not being decoded correctly. (PR# 000186)
Fixed bug in C/C++ test generation logic in which binary data for OCTET or BIT STRING was not being copied correctly. (PR# 000183)
Fixed an intermittent crash in C/C++ run-time having to do with the use of the rtMemReset memory allocation function. (PR# 000182)
Performance of C/C++ print-to-string functions was improved by using memory buffer streams with print-to-stream logic. (PR# 000181)
Fixed an infinite loop problem in C# that occurred in the Asn1DecoderBuffer class end of buffer check. Problem occurred when stream read method returned zero length. (PR# 000179)
Fixed bug in C/C++ BER encode and decode of certain parameterized types. Bug occurred when automatic tagging was used. DummyReference items within parameterized types required explicit tagging in this case which was not being done. (PR# 000176)
Fixed bug in C/C++ test code generation in which NULL type was causing a compiler crash. (PR# 000175)
Fixed warnings caused by use of g++ compiler with -Wall option. Warnings were generated for C++ destructor and free functions for ASN.1 CLASS definitions. (PR# 000174)
Fixed bug in C# code generation of event handlers for open type fields. (PR# 000170)

The following changes were made between v5.72 and v5.71:

Fixed C/C++ PER encode/decode size constraint checking bug. In cases such as the following:
OctStr ::= OCTET STRING (SIZE(0..50))
OctStr2 ::= OctStr (SIZE(10..20))
The generated encode function for OctStr2 always returned a constraint violation error. This was also true for sized BIT and character string types (PR# 000168).
Fixed bug in C/C++ PER code generation in which -lax option was causing incorrect PER encode/decode methods to be generated. This was caused by suppression of visible constraints required to do the encoding properly (PR #000166).
Added missing implementation of rtNewContext C run-time function (PR #000165).
Added C/C++ _NO_INT64_SUPPORT macro to easily turn off int64 type support. If this option is defined, ASN1INT64 is mapped to the C 'long' datatype and ASN1UINT64 is mapped to 'unsigned long' (PR #000164).
Fixed C run-time memory-management template file (rtMemHeapSubst.c). This file allows users to use an alternate memory management scheme. Incorrect types were used in parameters of some functions (int instead of size_t) (PR #000163).
Fixed bug in C/C++ PER constrained integer and character string encoding. Problem occurred on nested constraints such as the following:
IntConst ::= INTEGER (10..100)
IntConst2 ::= IntConst (20..30)
Encoder for IntConst2 was using base type range (10..100) instead of defined type range (20..30) which led to incorrect encodings. A similar problem was fixed for character strings with permitted alphabet constraints in this form (PR #000162).
Fixed Java and C# DER/PER/XER code generation for Big Integer with DEFAULT value (incorrect constructor and Equals method) (PR #000159 and #000157).
Fixed compiler crash that occurred when INTEGER types with huge constraints (numbers with more than 127 digits) were used (PR #000158).
Fixed bug in code C/C++ PER encode function generation for 'SET OF ComplexType' constructs. The second argument of the generated function ("value") was being passed by value instead of by pointer as it should have (PR #000154).
Fixed C/C++ PER documentation which was referring to the use of deprecated functions.

The following changes were made between v5.71 and v5.70:

Added extensibility handling logic for XER code generation for all languages (C/C++, Java, and C#).
Added sample programs to demonstrate use of Visual Basic .NET with C# code generated for common language run-time (CLR).
Added cpp/sample_per/nbapParser sample program to demonstrate use of table constraints with a SAX parser to parse a 3GPP NBAP message.
Fixed bug in streaming encoding of BER C/C++ short unsigned int in the range (128..255) (PR #000140).
Fixed bug in XER/XML code generation in which "SEQUENCE OF name Type" construct was not being handled correctly (PR# 000129).
Fixed bug in C# and Java BER decode of SEQUENCE type extension element (PR #00128).
Fixed an ASN1C crash when -maxcfiles was used in conjunction with -genReader or -genWriter command line option (PR #000133).
Fixed memory leak in C XER/XML decode function generation logic. asn1Sax_<>_free function was not called from asn1XD_<>/asn1XMLD_<> functions (PR #000137).
Fixed AIX linker warning "ld: 0711-224 WARNING: Duplicate symbol: asn1XmlSax_<>_bits_dict" (PR #000138).
Fixed problems in C/C++ makefile generation in which "-I ../.." relative include not being added and "CCFLAGS" not being set for C++ code gen (PR #000127).
Fixed bugs in generation of C++ parser code when enumerated types are present.
List/Array/DynamicArray configuration option support for C/C++ code generation.
Fixed XER/XML C/C++ code generation bugs for dynamic/static configuration option.
C# code generation: using statement generation fix for imported modules.