ASN1C v6.3.x Change Log
The last production release version of ASN1C 6.3 was 6.3.6, released on April 5, 2011. This release is no longer officially supported. Changes in this release include the following:
- Added an
equals()
method to the Java runtime for theAsn1OpenExt
class (ASN-3435). - Fixed a bug in the Java runtime that caused round-trip opentype encodings for BER to break when XML was also targeted (ASN-3425).
- Fixed a bug in Java XML code generation that caused extended ENUMERATION types to go "missing" in some cases (ASN-3419).
- Fixed a pair of bugs related to the use of extensible constraints with BIT STRING and SEQUENCE OF types. These would cause code to be generated that would not compile (ASN-3397).
- Fixed a code generation bug for Java for extended ENUMERATION types; XML decoders did not recognize extended values (ASN-3396).
- Fixed named BIT STRING decoding in BER for all languages. Trailing zero bits may be truncated in named bit strings in BER regardless of size constraint; decode logic was updated to properly recognize truncated bit strings (ASN-3376).
- Fixed a bug related to generation of XSD. The generated XSD for SEQUENCE OF involving BIT STRING would not always match how the generated XML encoder behaved (ASN-3354).
ASN1C 6.3.5 was released on February 25, 2011. Bug fixes that went into this release include the following:
- Fixed a bug in the packaging procedures that caused some C# source kits not to have all of the source files they should have had (ASN-3316 and ASN-3326).
- Fixed a bug in C# code generation that caused an incorrect run-time class to be used as s when a base 10 REAL was encountered in an ASN.1 specification (ASN-3317).
- Fixed a bug when processing version extension brackets that caused a crash when generating Java PER code (ASN-3295).
- Fixed a regression from 6.2 in which the
berDecStrmTLV
function was not properly accounting for bytes, and therefore returned the wrong length for the TLV (ASN-3242, ASN-2424). - Fixed an issue with Visual Studio 2005 and 2008 project generation that caused an invalid project file to be generated if -w64 was specified along with either -vcproj 2005 or -vcproj 2008 (ASN-3218).
- Fixed an issue with C# writer generation that sometimes caused an assertion failure to occur (ASN-3187).
- Fixed an issue in C PER code generation that caused some forward references to incorrectly be marked as static when they were dynamically allocated instead (ASN-3180).
- Fixed an issue in C-code memory free code generation in
which static
CHOICE
elements were causing improper memory free calls to be generated (ASN-3165). - Fixed a bug in generated Java code in which decoding table-constrained data would produce an exception if the value to be decoded was an ENUMERATED type. The exception was "Asn1Exception: Attempt to invoke base class PER decode method" (ASN-3328)
ASN1C 6.3.4 was released on 8 December 2010. Bug fixes that went into this release include the following:
- Fixed a bug in C/C++ print-to-string generation that caused improper values to be printed to strings when table unions are selected; in some cases, this could cause segfaults (ASN-3201).
- Fixed Java code generation to generate correct
set_*
calls forCHOICE
s withNULL
elements (ASN-3148). - Fixed a problem with using configuration files in the GUI (ASN-3133).
- Updated C/C++ code generation such that
–static
would generateCHOICE
structures without pointers even when the<storage>
type was set in a configuration file (ASN-3123). - Fixed a bug in Java / C# code generation that caused named INTEGERs to be treated like ENUMERATED types (ASN-3111).
- Changed the behavior of the
–pdu
option to use the word "all" instead of an asterisk (*) to avoid conflicts with shells that expand the asterisk as a wildcard. To treat all types as PDUs, the command-line should now read–pdu all
(ASN-3108). - Fixed a compilation issue in C/C++ XER code that caused constructors for PDU types to be generated without any implementations (ASN-3107).
- Fixed Visual Studio project generation when an output directory was specified. Extra quotes were added, causing invalid XML output (ASN-3104).
- Removed an unnecessary memory allocation and cleaned up runtime memory frees and resets (ASN-3093, ASN-3102).
- Fixed a bug in C/C++ XML code generation that caused code to be generated with missing constraint checks (ASN-3084).
- Fixed a bug in C/C++ XML code generation that resulted in code that would not compile (ASN-3084).
- Fixed C/C++ code generation so that the
valuePrefix
would be applied to PER alphabet constraints in generated code (ASN-3050). - Updated C/C++ code generation so that
EXTERNAL
types would always be generated inAsn1External.h/c(pp)
, even when–cfile
or–hfile
are passed as options. This allows linking against multiple ASN.1 libraries without name collisions (ASN-3050). - Fixed an error in the C# run time that caused DER-encoded
BIT STRING
s to be improperly truncated (ASN-3032). - Fixed a Java code generation bug in which exceptions were
caught for extended
ENUMERATED
types that did not throw them (ASN-3024). - Fixed a Java code generation bug in which types were
imported from the wrong module when
-dirs
was specified and the import was multiple levels deep (ASN-3024). - Fixed a memory leak that occurred when a compact runtime library was built and an error occurred in a message. Data associated with the error were not properly freed when requested (ASN-3008).
- Fixed a potential memory corruption in fixed-sized arrays
allocated via the
ALLOC_ASN1ARRAY
macro. When no initialization functions are generated, it is possible to create an array of uninitialized memory. If an error occurred during decode, it would prompt a crash if a memory free was explicitly requested through anasn1Free
function (ASN-3007). (Affects PER C/C++ code gen only.) - Fixed a potential memory corruption that occurs when
initialization functions are not generated and an open type is
decoded directly into an extension element. The open type data
was not being initialized to zero by default, and when an
explicit memory free is requested by a generated
asn1Free
function, it could cause a crash (ASN-3007). (Affects PER C/C++ code gen only.)
ASN1C is 6.3.3 was released on September 27, 2010. Bug fixes that went into this release include the following:
- Fixed a memory corruption caused by improper BIT STRING initialization in C++. This occurred only in invalid messages (ASN-2993).
- Fixed an infinite loop caused by certain data in unaligned PER bit string decoding in C/C++ (ASN-2985).
- Fixed C# Reader code generation so that a Print statement
would be added when
-print
was specified on the command line (ASN-2970). - Fixed a bug in makefile generation that caused incorrect parameters to be passed to GNU makefiles when making shared libraries (ASN-2956).
- Added a
typedef
forASN116BITCHAR
toasn1type.h
so that character set code generation would compile properly in C/C++ (ASN-2885). - Fixed a bug in print-to-stream generation when
-table-unions
and-prtfmt details
were used on the command-line (ASN-2858). - Fixed spurious references to
rtSetPrintStream
in reader code generation (ASN-2804). - Enhanced validation of character sets for IA5String,
VisibleString, PrintableString, NumericString, BMPString,
UTF8String, UniversalString when the
-strict
option is used (ASN-2847). - To faciliate portability of projects, the ASN1C GUI now uses relative path names for compilation files (ASN-2792).
- Fixed a bug related to support for contents constraints (CONTAINING TYPE) when constraining a bit string. For PER, the value of the constrained bit string should be a "complete encoding" and therefore have a length which is a multiple of 8 (ASN-2926).
ASN1C 6.3.2 was released on July 22, 2010. Bug fixes that went into this release include the following:
- The -maxcfiles option will no longer stop once it has generated the 509th file on a Windows system (ASN-2780).
- Added a signature for the generated toString() methods that allows the caller to skip passing a name. The name for the current item is used as a default (ASN-2773).
- Fixed a problem in the ASN.1 scanner that caused it to incorrectly report single-length type reference fields as macro definitions instead (ASN-2738).
- Fixed a C XER code generation bug that caused defined types
whose base type was enumerated to be missing a
#define
for parsing the named enumerated value (ASN-2738). - Fixed a bug in Java code generation that would cause defined types with size constraints to generate improper getter and setter methods (ASN-2726).
- Fixed a bug in C/C++ print code generation for table-union types in which an incorrect t value would be used in switch/case statements. (ASN-2724)
- Fixed a bug in the C/C++ PER run-time in which diagnostic bit trace information for open types with table constraints would at times be shifted to the left a few bit positions. (ASN-2724).
- Added the
xu_dump2
function to the C/C++ BER runtime. This function works analogously to xu_dump except that it automatically prints to either standard output or the user-registered print-to-stream callback function (ASN-2716). - Changed Java exception handling for SAXExceptions so that only a message would be returned, not an entire stack trace (ASN-2712).
- Fixed a bug in C/C++ XER decode code generation in which a local variable was failing to be declared for array variables (ASN-2710).
- Fixed a bug in type resolution logic in which a type that was directoy referenced in another module using the ModuleName.Type syntax without a corresponding import statement would cause invalid code to be generated (ASN-2710).
- Fixed a bug in C/C++ test code generation in which OCTET STRING values with size constraints were sometimes populated with a number of octets that was outside the defined range (ASN-2710).
- Fixed the generation of print to stream functions so that
NULL
types would be represented in the output (ASN-2695). - Fixed the generation of C# makefiles when imported types were referenced but code was not generated for them. Makefiles no longer contain empty references to modules with ungenerated code (ASN-2452).
- Made a fix for Java and C# runtime licenses (this discussion does not apply to users having an unlimited runtime license). Rather than setting the license key automatically in generated constructors, this is now done in the generated static initialization/static constructor. This makes is more likely that you will not need to manually set the runtime license key. However, if user code interacts with the runtime prior to Java/C# initializing one of the generated classes, you may get a "license key not set" error. In this case, you need to manually set the runtime license key. For Java, invoke Asn1Type.setKey(byte[ ]). For C#, invoke Asn1Type.SetKey2(byte[ ]). Pass in your license key, which will be available in a generated class, e.g. _YourProjectRtKey._rtkey. -->
ASN1C 6.3.1 was released on May 5, 2010. Bug fixes that went into this release include the following:
- Added full support for ISO 8601 date/time encoding for PER (all languages) as specified in X.691 (11/2008) clause 32.
- Fixed several GUI bugs (ASN-2682, ASN-2653, ASN-2634, ASN-2628).
- Removed unused objects for decoding enumerated types in XER/XML decoding (ASN-2670).
- Updated makefile generation to use
OBJOUT
macro instead of-o
to ensure that object files are properly saved when compiling using Visual Studio (ASN-2667). - Fixed a C/C++ PER encode/decode regression from version 6.2.x in determining if bit or octet string alignment should be done on strings containing extensible size constraints. (ASN-2642)
- Fixed the decoding of 64-bit unsigned integers with a value of zero (ASN-2640).
- Fixed invalid length exceptions that arose when decoding CHOICEs in Java (ASN-2637, ASN-2628).
- Fixed C code generation for sequentially enumerated types in PER (ASN-2581).
- Updated GUI help text by using Qt Assistant.
New items in the initial 6.3.0 release include:
- Improved Table Constraint Handling which builds on the work
done in v6.2 for 3GPP specifications. The
-table-unions
switch has been added to enable this code generation. - Support for stream-based PER encode/decode in C/C++.
- New configuration variables for reducing code size including <encoders>, <decoders>, and <memfree> which allow generation of specific functions for specific types.
- Capability to generate pretty-printed ASN.1 through the use
of the
-asn1
switch. The primary use of this is for XSD to ASN.1 translation. - Improved GUI Wizard. The GUI was improved to use tabbed displays for language-specific options.
- Constraint checking added to Java/C# setters.
- J2ME CLDC support updated in the Java version.