ASN1C v6.7.x Change Log
ASN1C 6.7.8 was released on July 20, 2016. Changes in this release include the following:
- Fix possible integer overflow prior to a memory allocation in the PER run-time (ASN-8679).
- Add check to fragmented length decode to ensure max of 64K returned as per spec.
- Fix possible memory related security issues with base 64 processing and converting dates and times to strings (ASN-8607).
- Fix possible security issues in the memory allocator for C and C++ (ASN-8544) (CVE-2016-5080).
- Fix possible memory allocation related security issues in the PER run-time for C and C++ (ASN-8469).
ASN1C 6.7.7 was released on February 17, 2016. Changes in this release include the following:
- Fix bug in Java and C# limited runtimes that don't include BER. For some licenses, the license check would consistently fail (ASN-8092).
- Fix generation of XSD when using -xml for the case of SEQUENCE OF CHOICE. The generated XSD did not correspond to the encoding that OSys-XER uses (ASN-8028).
- Fix C/C++ PDU encoder/decoders when -xml is specified to dynamically choose the document root element name based OSASN1XER flag (ASN-8025).
- Fix C++ code generation when -maxlines and -cppNs are used together: close the namespace scope before including secondary header file to avoid a nested namespace declaration (ASN-7981).
- Fixed a problem that could cause floating license server slots to continue showing up as in use even though the asn1c binary had run down (ASN-7950).
- Fixed a problem that could cause an incorrect RTERR variable name to appear in generated code (ASN-7950).
- Fixed a bug in C/C++ test code generation in which the populated data would sometimes violate a table constraint (ASN-7931).
- Fixed a bug in C/C++ BER decoding in which a zero-length BIT STRING was reported to be an error when it had named bits and a size constraint; see X.690/2008 22.214.171.124 (ASN-7779).
- Fixed a bug in the C/C++ PER code generation that could occur when memory allocation failed while decoding optional elements enclosed in versioning brackets (ASN-7715).
- Fixed a bug in the C/C++ PER runtime that caused optimized runtime libraries to overwrite a single byte near a buffer boundary (ASN-7687).
- Fixed a bug in Java PER decoding in which extension elements that had CONTAINING types were improperly decoded (ASN-7675).
ASN1C 6.7.6 was released on March 26, 2015. Changes in this release include the following:
- Fixed a bug in the rtxStreamMemoryCreateWriter function in the C runtime library that caused the memory stream writer to dynamically create a buffer even when a backing byte array was used (ASN-7756).
- Changed behavior of rtxStrncpy to always terminate destination buffers. Previously, if the source and destination buffers were the same size, rtxStrncpy would not terminate the destination; now it terminates the destination buffer and returns a null pointer (ASN-7596).
- Fixed a bug in the Java PER runtime in which fragmented octet strings aligned on a 16k boundary did not have the proper padding byte written (ASN-7587).
- Fixed a crash that can occur when closing an unaligned PER open-type extension where the extension element aligns exactly at the end of the encoding buffer (ASN-7578).
- Fixed a bug in the C/C++ runtime that could cause hex strings to be improperly converted to ASCII. This impacts generated XML decoding logic for open types (ASN-7568).
- Fixed a bug in Java/C# code generation related to XER and extended SEQUENCE types. Prior to this fix, the generated code would not compile (ASN-7500).
- Addressed warnings in generated code for legacy table constraints: function prototypes were inconsistent and the assignment of function pointers led to compilation warnings (ASN-7498).
- Removed an isolated use of sprintf in the ASN.1 common runtime for printing bit strings to character strings (ASN-7467).
- Added support for fragmented PER messages to Java. Use –perindef on the command line to add support for these messages (ASN-7465).
- Fixed a bug in Java code generation in which CHOICE elements were not properly qualified when –strict was passed on the command line. This only affects string validation and will not affect users that do not use strict constraint checks (ASN-7418).
ASN1C 6.7.5 was released on February 16, 2015. Changes in this release include the following:
- Fixed a bug in which generated C++ code would refer to a non-existent constant when –use-enum-types was used with –compact, which turns off the use of some preprocessor definitions (ASN-7404).
- Fixed a bug in XER C/C++ code generation in which the use of –use-enum-types would result in invalid code for XER or XML (ASN-7404).
- Addressed issues in BER C/C++ code generation for handling extended enumerations (ASN-7400).
- Fixed a bug in BER C/C++ code generation in which error handling for invalid enumerations would return control to the decoder in the wrong place (ASN-7400).
- Fixed a bug in BER C/C++ code generation in which invalid enumeration values would be decoded without error (ASN-7400).
- Fixed an issue in which ASN1C generated initialization functions
for XSD-originating sequence-of types that contained incorrect calls
to a free function of the sort
(pctxt, <element name>)(ASN-7326).
- Removed unnecessary second return call in some error handling in C/C++ PER code generation (ASN-7320).
- Fixed 3G decoder code generation for fixed-length bit strings. Formerly, the generated code would erroneously refer to a non-existent member named "data" (ASN-7307).
- Adjusted the behavior of rtxStrncpy so that when the nchars parameter covered the null terminator in a string and bufsiz was large enough, the function copied the source to the destination without error (ASN-7220).
- Fixed code generation for Java and C# when –compare was specified on the command line. Versioning brackets caused an invalid hashCode method to be generated (ASN-7202).
ASN1C 6.7.4 was released on November 13, 2014. Changes in this release include the following:
- Fixed handling of extension groups for C/C++ XER. Make sure that extension group present flags are set during decoding and observed during encoding, and that the decoder allows the extension elements to be absent in the XER encoding when permissible (ASN-7117).
- Updated rules for time parsing to permit offsets of +13 hours to accommodate times in New Zealand for summer hours (ASN-7145).
- Fixed a crash in C/C++ code generation that could occur when parsing hexadecimal values in specifications such as CAMEL (ASN-7144).
- Fixed a bug in Java code generation in which SEQUENCE OF types containing ENUMERATED values used the wrong type name, causing a compilation failure (ASN-7109).
- Fixed a bug in Java and C# PER code generation that caused improper encodings of extension elements that had default values. Addressed printing logic in C to ensure that these default extensions were printed out (ASN-7108).
- Fixed a bug in C# code generation in which open type extensions that contained enumerations would not be padded (ASN-7077).
rtxStrncpyto ensure that string boundaries were properly respected when terminating the copy buffer; addressed a missing null-memory check in
- Fixed a bug in Java and C# table constraint handling where an open type nested within a choice type would not be decoded further based on the table constraint information. This would happen only in certain cases where the checkTC method was generated with the wrong value for the choice index (ASN-7032).
- Fixed a bug in Java code generation that caused a crash when attempting to parse a table constraint that did not explicitly reference a class field (ASN-7022).
- Fixed a bug in the parser so that ASN1C would properly recognize the use of double quotation marks in literal strings in permitted alphabet constraints (ASN-7004).
ASN1C 6.7.3 was released on September 9, 2014. Changes in this release include the following:
- Fixed a bug related to parameterized types. In some cases, the code generated for a parameterized type, that was used with different actual parameters, would be generated as if the actual parameters were the same in all cases (ASN-6923).
- Fixed a bug that affected creation of "temporary types" for SEQUENCE OF types. Given two distinct types, Mod1.X and Mod2.X, and two elements, SEQUENCE OF Mod1.X and SEQUENCE OF Mod2.Y, a single temporary type might be created, so that one of the SEQUENCE OF's would not be represented correctly. This manifested in Java code generation, but could possibly affect other languages, C# especially (ASN-6913).
- Fixed a bug in Java and C# runtime license checking. The runtime would sometimes incorrectly report a license check failure in multithreaded applications (ASN-6889).
- Fixed a bug in C/C++ code generation when using
–linkedlist: memory could be incorrectly initialized, leading to invalid results (ASN-6826).
- Added support for zeroing memory on free to the ASN.1 context managed heap. See our blog post for technical details (ASN-6819).
- Exported the
xu_fmt_tag2function to allow users to call it for their own tag formatting purposes (ASN-6799).
- Adjusted warnings for C/C++ code generation when an enumerated type prefix was specified by the user in a configuration file; no warning is printed when the name is changed (ASN-6799).
- Fixed a bug in C/C++ code generation that would cause the
extension of any C/C++ file to be replaced with either
.cpp, even when users specified their own (ASN-6799).
- Fixed C/C++ error handler callback to work properly in the case of an invalid enumerated error (RTERR_INVENUM)(ASN-6763).
- Fixed a bug in Java's
Asn1BitStringthat caused empty bit string comparisons to return
falsewhen in fact the bit strings were equal (ASN-6764).
- Fixed C/C++ code generation for enumerated types so that an error handler could accommodate invalid values in the enumeration (ASN-6763).
- Fixed a problem in which compilation warnings would be issued by some compilers against some of the C function prototypes in the C/C++ run-time (ASN-6758).
- Adjusted C/C++ code generation for OCTET STRING printing to ensure that the minimal number of octets would be printed when the octet string was sized (ASN-6738).
ASN1C 6.7.2 was released on June 27, 2014. Changes in this release include the following:
- Fixed a bug in
rtxEncBitso that all non-zero values passed to it would be treated as
TRUE. Some calls from legacy code were causing
FALSEto be encoded instead (ASN-6723).
- Fixed a C/C++ copy code generation bug in which source and destination were confused for character arrays (ASN-6711).
- Fixed a bug in C++ pure parser generation in which types were
assumed to be generated for
SEQUENCE OFproductions, even though
–notypeswas specified on the command line (ASN-6690).
- Fixed a rare corner case in C/C++ unaligned PER encoding in which the memory heap could be invalidated when encoding an unaligned field in such a way that it aligned directly on the last byte of the dynamic encoding buffer (ASN-6674).
- Fixed a bug in the C# run-time that could cause ArgumentNullException errors (ASN-6623).
- Adjusted code generation and runtime libraries to use a safer
memmovethat performs destination bounds-checking; the new macro is
OSCRTLSAFEMEMCPYand may be used anywhere the
OSCRTLMEMMOVEmacros were used previously (ASN-6622).
MACROparsing so that missing optional
ERRORelements wouldn't cause a syntax failure when
–x208was passed on the command line (ASN-6611).
- Fixed a bug in C/C++ code generation in which the use of the
typePrefixconfiguration option would cause parameterized types in CAP to go missing (ASN-6611).
- Absolute paths are now properly represented in generated makefiles (ASN-6600).
- Fixed a bug in license checking in which
Unable to get host iderrors could be erroneously raised (ASN-6599).
- Updated configuration file rules so that
<isBigInteger/>can be applied to elements, not just productions (ASN-6530).
- Changed the definition of
ALLOC_ASN1ARRAYto zero out memory so that its use apart from
–initwould properly clear out old data (ASN-6517).
- Fixed a problem with generated .csproj files not building if the -o qualifier was specified on the asn1c command line (ASN-6503).
- Fixed a problem with generation of C# projects. If -csharp and -vcproj 2008 were specified, the generated project referenced the Visual Studio 2010 C# run-time instead of the Visual Studio 2008 C# run-time (ASN-6502).
- Fixed a problem with an exception occurring when running C or C++ code that was built against the limited run-time if rtkey.h contained an expired key (ASN-6484).
- Fixed a problem that would cause a cryptic error message to be displayed on Linux systems if more than one .lic file was found (ASN-6481).
- Added the capability for the ASN1C licensed run-times to read the key from an osyslic.txt file in addition to an rtkey.dat file (ASN-6465).
- Added new abstract classes to Java and C# runtime: Asn1Seq, Asn1Set, Asn1SeqOf, and Asn1SetOf. These classes provide the ability to access elements in a somewhat generalized fashion.
- Improved the comment written to the generated rtkey.h file so that if a run-time expiration date was present, this was noted.
ASN1C 6.7.1 was released on April 9, 2014. Changes in this release include the following:
- Fixed a crash that could be caused when using deferred decoding
ASN1FASTCOPYflag set in the context (ASN-6474).
- Fixed a memory corruption that occurs when users who ported code
from pre-6.0-era versions of ASN1C to 6.x using the packaged
rtport.plscript called the
rtxDListAppendDatafunction. Users who have never called the script or who have regenerated code from newer versions are unaffected by this issue (ASN-6446).
- Fixed a problem with C/C++ PER
OCTET STRINGencodings for zero-length octet strings. They were encoded as 0x00 0x00 instead of 0x00 (ASN-6442).
- Fixed C/C++ runtime source compilations when
_MEMCOMPACTwas defined (ASN-6430).
- Added deferred decoding for BER to C# code generation (ASN-6410).
- Fixed a bug in C/C++ code generation to fix encodings of types marked as open types using the <isOpenType/> predicate in a configuration file (ASN-6410).
- Updated several runtime functions in response to lint-checking warnings related to variable initializations (ASN-6337).
- Fixed a bug in C/C++ PER code generation in which an "OK" status
could be returned when decoding failed; this occurred when
–compactwas specified on the command line (ASN-6331).
- Fixed a bug in C/C++ copy code generation that could cause corruption in character arrays (ASN-6328).
- Fixed a bug in C/C++ copy code generation in which a failed memory allocation was ignored (ASN-6312).
- Fixed a bug in Visual Studio project file generation in which references to asn1rt_a.lib would be incorrectly generated as asn1rt_a.libd (ASN-6456).
ASN1C 6.7.0 was released on February 3, 2014. New features in this release include the following:
- Support added for some C++ 11 features in generated code.
- Generation of Portable Makefiles.
- Generation of Doxygen Documentation.
- Improved XSD Compilation Support.
- Visual Studio 2010 now the Default Compiler for Windows.
- MINGW now a Standard Supported C/C++ Compiler.