diff --git a/CHANGELOG b/CHANGELOG index 4f462269..cf2264d0 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,8 +1,137 @@ -Changes to version 1.5.1 +Changes to version 1.6.0 ------------------------ New features and improvements: +- Updated array handling (every array element is not a separate ModelNode instance) +- IED server: added additional callbacks to control external access to the data model (required to implement RBAC) +- IED server: implemented write access handler for array elements and components of array elements (LIB61850-437) +- IED server: new function IedServer_handleWriteAccessForDataObject (LIB61850-437) +- added function to get timestamp of received command (ControlAction_getT) (LIB61850-422) +- added function IedClientError_toString +- Java tools: Support for time stamp Val elements +- BETA: Support for R-GOOSE and R-SMV +- BETA: SNTP client code + +Other changes: + +- Ethernet(Linux): Set to promisc mode by default +- removed legacy defines for report reasons (#449) + +Fixed bugs and vulnerabilities: + +- fixed out-of-bound read in parseAarePdu function (LIB61850-442)(#513) +- ACSE: fixed out-of-bounds read in parseAarqPdu function (LIB61850-441)(#512) +- GOOSE receiver: added additional length and plausibility checks to fix #509 +- MmsValue_decodeMmsData: add support for empty visible-string, mms-string, and octet-string values (#506) +- MMS client: fixed - getNameList task can get stuck in while loop when message cannot be sent (LIB61850-347) +- fix: ssl renegotiation causing handshake failure (#494) +- GOOSE publisher: fixed - publisher parameters not set correctly (I6LLCV-76) +- fixed potential memory leak when GooseReceiver is immediately stopped after start (I6PLLCV-71) +- .NET API: fixed - crash when GetDataSetDirectoryAsync returns error (LIB61850-434) +- MMS server: fixed - server is sending data set response larger than negotiated MMS PDU size (LIB61850-435) +- fixed - potential race condition when using IedConnection_installReportHandler and IedConnection_uninstallReportHandler +- fixed - IEC 61580 server: dataset is not released when RCB.Datset is set to empty string by client (LIB61850-425) +- MMS client: fixed - parsing of servicecsSupported in MMS init response is off by one (LIB61850-419)(#469) + + + +Changes to version 1.5.3 +------------------------ + +New features and improvements: + +- config file parser dynamically allocates linebuffer to allow multithreaded applications (#484) +- parse time values in model configuration file (LIB61850-426) +- config file generator: added missing code for GSEControl (LIB61850-418) +- Config file generator: support multiple access points for GOOSE and SMV control blocks (LIB61850-418) +- config file generator: added code to add SMVCBs to config files (LIB61850-67) +- IED server: added code to create SMVCBs with the dynamic model API (LIB61850-67) +- MMS server: added support for write access with component alternate access (LIB61850-414) +- MMS client: added function MmsConnection_writeVariableComponent to write to variables with alternate component access (LIB61850-414) +- make write access to RCB elements configurable according to ReportSettings (LIB61850-404) +- Added function IedConnection_setLocalAddress to define local IP address and optionally local port of a client connection (LIB61850-378) +- IED server: added ControlAction_getSynchroCheck and ControlAction_getInterlockCheck functions + + +Fixed bugs and vulnerabilities: + +- fixed - IEC 61580 server: dataset is not released when RCB.Datset is set to empty string by client (LIB61850-425) +- PAL: fixed wrong order of function arguments for fread and fwrite functions +- MMS client: parsing of servicecsSupported in MMS init response is off by one (LIB61850-419)(#469) +- fixed - potential memory leaks in goose publisher code (#464) +- fixed - server sends dchg report when only dupd is enabled in RCB (LIB61850-411) +- GOOSE subscriber: fixed - possible heap corruption in parseAllData due to missing validity check in bit-string handling (LIB61850-402) +- IED server: fixed problem with implicit ResvTms setting when reserved with RptEna (LIB61850-400) +- IED server: fixed - segmentation fault when compiled with CONFIG_MMS_THREADLESS_STACK (LIB61850-398) +- fixed - MMS server: messages can be corrupted when TCP buffer is full (LIB61850-385) +- fixed - .NET: IedConenction.WriteDataSetValues throws a NullReferenceException (LIB61850-384) +- fixed - server send invalid response- when client uses wrong ctlModel (LIB61850-383) (#435) +- fixed - IedConnection_setRCBValuesAsync crashes when RCB is already reserved by other client (LIB61850-382) +- fixed - outstanding call not released in IedConnection_getDataSetDirectoryAsync (LIB61850-379) + + +Changes to version 1.5.2 (Dec 19, 2022) +--------------------------------------- + +New features and improvements: + +- renamed TLSConfiguration_EventLevel to TLSEventLevel +- updated required mbedtls version to 2.28.x +- Added check for changed CRL on socket read/write. Added reset of renegotiation ssl cache on CRL add +- Fixing Security events messages to match IEC62351-100-3 +- .NET API: Added support for TLS event handler (LIB61850-373) +- IED Server: added function to set time quality for internally updated times (LIB61850-372) +- added TLSConnection object to provide more context in TLS event callback (LIB61850-366) +- TLS: added TLS alert callbacks; support for session resumption with session IDs (LIB61850-339) +- MMS client: added function MmsConnection_sendRawData for test purposes +- changed StringUtils_createStringInBuffer function to consider max buffer size (LIB61850-333) +- replaced most str(n)cpy/str(n)cat calls (LIB61850-333) +- encode boolean true value as 0x01 instead of 0xff to avoid interoperability problems +- added IedServerConfig_setSyncIntegrityReportTimes/IedServerConfig_setSyncIntegrityReportTimes wrapper to .NET API (LIB61850-323) +- added feature: synchronization of integrity report times (LIB61850-323) +- server: added RCBEventHandler event types REPORT_CREATED and OVERFLOW +- added function ReportControlBlock_getResv +- mms_utility: added option to read data set directory +- .NET API: added IedServer.GetFunctionalConstrainedData method (LIB61850-317) +- RCBEventHandler: replaced GI event by purgeBuf event when client disables RCB instance (LIB61850-316) +- enabled TLS 1.2 support in mbedtls configuration +- improved MmsValue handling; fixed MmsValue(OCTET-STRIG) maximum size problem (LIB61850-150) +- IED server: improved control state machine performance (LIB61850-312) + +Fixed bugs and vulnerabilities: + +- fixed - dynamic model helper functions: Check added to Cancel object for CDC APC +- fixed wrong number in TLS event code define (LIB61850_366) +- fixed - servers sends object-access-unsupported on GetAllData when ReadAccessHandler is installed (LIB61850-370) +- fixed - endless loop sending reports when MMS PDU size is too small (LIB61850-365) +- fixed path traversal vulnerability in MMS file services (LIB61850-357) +- IED server: added missing call to getNextRoundedStartTime (LIB61850-323) +- fixed - server crashs when SyncIntegrityReportTimes is active and IntgPd=0 (LIB61850-355) +- fixed - missing API export declarations for functions IedServerConfig_setSyncIntegrityReportTimes and IedServerConfig_getSyncIntegrityReportTimes (LIB61850-353) +- IED server: fixed - possible deadlock when IedServer_lockDataModel is used from multiple threads (LIB61850-352) +- MMS server: fixed - possible deadlock in obtainFile-service/file upload task (LIB61850-351) +- MMS server: fixed potential null pointer dereference when confirmeServiceResponse for fileOpen is received with invoke-id 0 (LIB61850-348) +- MMS_SERVER: fixed bug in getNameList request handling when domain ID is too long (LIB61850-346) +- GOOSE subscriber: fixed vulnerabilities related to malformed bit-string, integer, and unsigned values (LIB61850-342) +- MMS server: fixed bug in handling of continueAfter parameter of getNameList request (LIB61850-341) +- fixed sscanf format string in config_file_parser.c +- fixed locking mechanism in logging.c (LIB61850-327) +- fixed problem: negative presentation layer and ACSE results are ignored by client +- fixed wrong buffer size in client side report handling +- fixed memory leak in server read request handling (LIB61850-325) +- fixed memory leak in reuse of client connection (related to socket extension buffer) +- fixed - TLS: CRL is ignored +- fixed wrong MMS protocol version check (#379) +- fixed - SV publisher encoding problem when svID or datset length > 127 bytes (LIB61850-315)(#382) +- IedServerConfig: added missing variable initialization +- fixed - server doesn't respond SBOw when waiting for select callback (LIB61850-313) + +Changes to version 1.5.1 (Mar 11, 2022) +--------------------------------------- + +New features and improvements: + - added server side ReportControlBlock events and value access functions - added functions Timestamp_fromMmsValue and Quality_toMmsValue - made server report reservation compatible with Ed. 2.1 (LIB61850-293) @@ -54,63 +183,6 @@ Fixed bugs and vulnerabilities: - IED server: For SBOes check test flag match when accepting operate (sSBOes8) - IED server: Reject Cancel/SBOw in WaitForChange state - fixed problem with test case sCtl26 - -Changes to version 1.5.0 ------------------------- -- added support for time with ns resolution -- IEC 61850 server: control models - allow delaying select response with check handler (new handler return value CONTROL_WAITING_FOR_SELECT) -- IEC 61850 server: added support to listen on multiple IP addresses and ports (new function IedServer_addAccessPoint) -- added support for service tracking -- added tool support for transient data objects -- .NET API: added more functions to create and access server data model -- IED server - control model - send AddCause with operate- for DOes, SBOes control models -- IED server: integrated GOOSE publisher - lock data model during GOOSE retransmission to avoid corrupted GOOSE data -- added server example for dead band handling -- IED server: make presence of RCB.Owner configurable at runtime with function IedServerConfig_enableOwnerForRCB (B1502/S1634) -- IED server: make presence of BRCB.ResvTms configurable at runtime with function IedServerConfig_enableResvTmsForBRCB (F1558) -- restrict maximum recursion depth in BerDecoder_decodeLength when indefinite length encoding is used to avoid stack overflow when receiving malformed messages -- fixed oss-fuzz issues 31399, 31340, 31341, 31344, 31346 -- IED server: fixed bug in log service - old-entry and old-entry-time not updated -- IED server: added new function IedServer_handleWriteAccessForComplexAttribute. Changed WriteAccessHandler behavior when ACCESS_POLICY_ALLOW. -- MMS server: add compile time configuration options to enable/disable fileDelete and fileRename services (fileRename is now disabled by default) -- MMS server: better data model lock handling for performance improvements -- Linux - Ethernet: replace IFF_PROMISC by IFF_ALLMULTI -- improvements in Python wrapper code -- IED server: control models - fixed bug that only one control is unselected when connection closes -- IED server: fixed bug - logs (journals) are added to all logical devices instead of just the parents -- IED Server: prevent integrated GOOSE publisher to crash when ethernet socket cannot be created -- IED server: make compatible with tissue 1178 -- IED server: reporting - implemented behavior according to tissue 1432 -- IED server: WriteAccessHandler can tell the stack not to update the value when returning DATA_ACCESS_ERROR_SUCCESS_NO_UPDATE -- IED server: fixed problem that BL FC is not writable (#287) -- IEC 61850 client: fixed dead lock in IedConnection_getFileAsync when fileRead times out (#285) -- IED server: added ControlSelectStateChangedHandler callback for control mode -- Client: fixed - IedConnection_getRCBValues doesn't check type of server response (#283) -- GOOSE subscriber: changed maximum GoID size according to tissue 770 (129 bytes) -- IED server: send AddCause for invalid origin also in case of direct control models -- IED server: support for configuration of EditSG service and online visibility of SGCB.ResvTms at runtime -- IED server: changed types TrkOps and OptFlds to variable length bit strings -- MMS: changed handling of variable sized bit strings (now also accepts bit strings of larger size, ignoring the bits that exceed the specified size) -- IED server: add support for correct CBB handling (required for test case sAss4) and initiate error PDU -- IED server: add support for tissue 807 (owner attribute in RCB is only present when ReportSettings@owner attribute is true) -- IED server: implemented tissue 1453 also for writing to "RptId" (purgeBuf only executed when value changes) -- GOOSE subscriber: always copy GoID and DatSet from GOOSE message; always create new MmsValue instance for GOOSE data set when subscriber is observer -- IED server: added configuration file support for data set entries with array elements or array element components -- fixed problems in handling array elements and array element components -- fixed bug in MmsConnection_readMultipleVariables: send invaid messsage and memory access errors when too many items are passed to the function exhausting MMS payload size -- IEC 61850 server: fixed problem with test case sRp4 - RCB RptID attribute is not empty after writing empty string -- fixed program crash when normal mode parameers are missing in presentation layer (#252) -- IED Server/GOOSE: Don't send GOOSE message with new event while data model is locked -- GOOSE: added GOOSE observer feature (GooseSubscriber listening to all GOOSE messages) and GOOSE observer example -- COTP: fixed possible heap buffer overflow when handling message with invalid (zero) value in length field (#250) -- IEC 61850 server: fixed - cancel command for time activated control returns object-access-denied even in case of success -- IEC 61850 client: fixed bug - IedConnection_setRCBValuesAsync always return 0 instead of invoke-ID -- MMS: fixed problem in handling of indefinite length encoded BER elements -- IEC 61850 client: reporting - support data set entries with multiple reasons for inclusion -- Java tools: moved minTime, maxTime from GSEControl to GSE; updated GOOSE server example CID file -- IEC 61850 server: Added ControlAction_setError function - with this function the user application can control the error code used in LastApplError and CommandTermination messages -- IEC 61850 server: fixed problem with logging when log data set contains FCDO (#225) - Changes to version 1.4.2.1 --------------------------