Dear all,
There is now a maintenance release v1.5.5 for the currently "stable" 1.5 release series.
You can get it on Github at
https://github.com/open62541/open62541/releases/tag/v1.5.5.
The release notes are below.
Thanks to everybody whose effort contributed to this release.
Regards,
Julius Pfrommer
Dr. Julius Pfrommer
General Manager | o6 Automation GmbH
Rintheimer Straße 23, 76131 Karlsruhe
Web:
https://www.o6-automation.com
Mail:
julius....@o6-automation.com
---
This open62541 release v1.5.5 is the fifth maintenance release of the 1.5 release series.
open62541 (
http://open62541.org) is an open source implementation of OPC UA (OPC Unified Architecture / IEC 62541) written in the C language. The library is usable with all major compilers and provides the necessary tools to implement dedicated OPC UA clients and servers, or to integrate OPC UA-based communication into existing applications. The open62541 library is platform independent: All platform-specific functionality is implemented via exchangeable plugins for easy porting to different (embedded) targets.
open62541 is licensed under the Mozilla Public License v2.0 (MPLv2). This allows the open62541 library to be combined and distributed with any proprietary software. Only changes to the open62541 library itself need to be licensed under the MPLv2 when copied and distributed. The plugins, as well as the server and client examples are in the public domain (CC0 license). They can be reused under any license and changes do not have to be published.
This maintenance release has a bigger footprint than usual. The reason is the new 1.05.07 release of the OPC UA specification. This came with significant changes to the handling of ECC SecurityPolicies. The changes are included in this maintenance release and have been tested against all major OPC UA SDK with 1.05.07-based ECC-support.
Important changes compared to the previous v1.5.4 release include:
- core: Add asserts to protect against division or module by zero
- core: Fix deference null return value by checking return value of UA_realloc
- core: Fix the case where the last chunk may exceed the max message size
- core: Fix integer overflow in array decoding
- core: Implement OPC UA 1.05.07 changes for SecureChannels
- core: Disallow directly nested ExtensionObjects for the JSON encoding
- core: Bound the depth of relative paths
- core: Copy membersSize to destination in UA_DataType_copy
- arch: Implement UDP interface selection on MacOS
- server: Deny transfer of detached subscriptions in default access control
- server: Apply allowBrowseNode access control in TranslateBrowsePathsToNodeIds
- server: Add ECC Session authentication from OPC UA 1.05.07
- server: Never use ECC SecurityPolicies for auth over a #None SecureChannel
- server: Return the EphemeralKey only when requested by the client
- server: Always return the server certificate (used for auth) in the Endpoints
- server: Don't filter the serverEndpoints in CreateSession by the current channel's SecurityPolicy
- server: Fix checks for writing StatusCode and SourceTimestamp of a value
- server: Validate AddReferences target node class
- server: Reject negative TrustList read lengths
- server: Delete non-activated sessions when their SecureChannel closes
- server: Guard securityPolicyUriPostfix against empty URI
- server: Variables with DataSource and SamplingInterval=0 receive DataChangeNotifications
- server: Guard setAsyncCallMethodResult against union aliasing for direct calls
- server: Guard async direct queue overflow paths
- server: Enforce default message and chunk size limits to prevent DoS
- server: Move libmdnsd dependency to the upstream
- server: Prevent infinite retries during register server for discovery
- server: Allow multicast-DNS without NS=FULL
- server: Match the name in addition to the port in UA_Discovery_recordExists
- client: Add Session authentication from OPC UA v1.05.07
- client: Request the EphemeralHeader for ECC SecurityPolicies
- client: Allow all Session nonce >= 32bit
- client: Fix AddReferences target node class assumption
- client: Check for NULL callback pointer in UA_Client_Subscriptions_delete_async
- client: Initialize response structures before use
- client: Fix queryNext using wrong type constants
- client: Use client ns mapping for decoding response messages
- pubsub: Guard DataSetPayload JSON field count against UA_UInt16 overflow
- utils: Correctly handle the length field of ECCEncryptedSecret
- utils: Bound the depth of EventFilter expressions
- utils: Fix a memleak in UA_EventFilter_parse
- plugins: Fix handling of malformed field names in plugins/ua_config_json.c
- plugins: Correctly consider the PKI folder in the JSON config
- plugins: Fix improper use of negative value by checking return value of UA_ftell
- plugins: Mark deprecated ECC SecurityPolicies; Remove from default config
- plugins: Implement ECC SecurityPolicies NistP256_AesGcm and NistP256_ChaChaPoly
- deps: Fix dtoa buffer offsets
- build: Install generate_bsd.py in share/open62541
- tests: Generalize the PCAP-replay ConnectionManager beyond POSIX
Diff stat: 175 files changed, 11011 insertions(+), 2313 deletions(-)
Diff stat in /include and /src: 40 files changed, 1958 insertions(+), 772 deletions(-)
New features and major changes compared to the previous 1.4 release series include:
- core: JSON de/encoding according to the OPC UA 1.05 specification
- core: XML de/encoding of Variants (also with multi-dimensional arrays) and structure-types
- core: UA_String_format with shorthands to print OPC UA builtin types
- arch: Support for FreeRTOS (using the lwip EventLoop)
- arch: Support for QNX
- arch: Support for Zephyr
- server: Support for "local" Event-MonitoredItems
- server: Extended async operations (read/write/call)
- server: Improved value source API for VariableNodes
- server: Implement CertificateGroup handling
- server: Support for GDS push operations
- client: Transparent mapping between local and remote namespace-indices
- client: Automatically read the NamespaceArray during connect (add to the namespace mapping)
- client: Support for Event-MonitoredItems
- client: All async service APIs are typed
- client: Load DataTypeDefinitions from the server at runtime
- pubsub: Support for manual de/encoding of PubSub messages
- pubsub: Custom state machine for PubSubComponents to integrate communication backends
- pubsub: Public API to compute offset tables for fixed Network-/DataSetMessages
- pubsub: Improved loading of PubSub configurations from a (binary) file
- pubsub: Initial support for SKS
- nodeset-compiler: Use the native XML decoding to parse <Value> attributes at runtime
- util: Query language (and parser) for EventFilter, RelativePath, etc.
- util: Convert DataTypeDefinition into UA_DataType (internal representation)
- eventloop: EventLoop can be cancelled to immediately return from a "poll-sleep"
- eventloop: Option to limit the number of sockets open at the same time
- eventloop: Support for lwip-based EventLoop
- plugins: Crypto PKI/SecurityGroup with a file-system storage backend
- plugins: Support for ECC-based SecurityPolicies (OpenSSL only)
- tools: "Shell mode" for the ua-cli terminal clientn