From d6c53b1569b48781608bc3e1c23905256b6af506 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Thu, 15 Feb 2024 17:35:21 +0000 Subject: [PATCH] - IedServer: fixed crash when client tries to write complete SGCB structure --- src/iec61850/server/mms_mapping/mms_mapping.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/iec61850/server/mms_mapping/mms_mapping.c b/src/iec61850/server/mms_mapping/mms_mapping.c index 707e8b57..63c39719 100644 --- a/src/iec61850/server/mms_mapping/mms_mapping.c +++ b/src/iec61850/server/mms_mapping/mms_mapping.c @@ -1,7 +1,7 @@ /* * mms_mapping.c * - * Copyright 2013-2022 Michael Zillgith + * Copyright 2013-2024 Michael Zillgith * * This file is part of libIEC61850. * @@ -1309,8 +1309,8 @@ checkForServiceTrackingVariables(MmsMapping* self, LogicalNode* logicalNode) { ModelNode* modelNode = logicalNode->firstChild; - while (modelNode) { - + while (modelNode) + { if (!strcmp(modelNode->name, "SpcTrk") || !strcmp(modelNode->name, "DpcTrk") || !strcmp(modelNode->name, "IncTrk") || !strcmp(modelNode->name, "EncTrk1") || !strcmp(modelNode->name, "ApcFTrk") || !strcmp(modelNode->name, "ApcIntTrk") || @@ -2644,6 +2644,10 @@ mmsWriteHandler(void* parameter, MmsDomain* domain, if (nextSep != NULL) { nextSep = strchr(nextSep + 1, '$'); + if (nextSep == NULL) { + return DATA_ACCESS_ERROR_OBJECT_ACCESS_UNSUPPORTED; + } + char* nameId = nextSep + 1; if (strcmp(nameId, "ActSG") == 0) {