diff --git a/src/iec61850/server/impl/ied_server.c b/src/iec61850/server/impl/ied_server.c index 16ec66f4..05a7eedd 100644 --- a/src/iec61850/server/impl/ied_server.c +++ b/src/iec61850/server/impl/ied_server.c @@ -1692,6 +1692,6 @@ void IedServer_setGooseInterfaceId(IedServer self, const char* interfaceId) { #if (CONFIG_INCLUDE_GOOSE_SUPPORT == 1) - self->mmsMapping->gooseInterfaceId = interfaceId; + self->mmsMapping->gooseInterfaceId = StringUtils_copyString(interfaceId); #endif } diff --git a/src/iec61850/server/mms_mapping/mms_mapping.c b/src/iec61850/server/mms_mapping/mms_mapping.c index aa469f8f..d1fd10cd 100644 --- a/src/iec61850/server/mms_mapping/mms_mapping.c +++ b/src/iec61850/server/mms_mapping/mms_mapping.c @@ -2014,6 +2014,7 @@ MmsMapping_destroy(MmsMapping* self) #if (CONFIG_INCLUDE_GOOSE_SUPPORT == 1) LinkedList_destroyDeep(self->gseControls, (LinkedListValueDeleteFunction) MmsGooseControlBlock_destroy); + if (self->gooseInterfaceId) GLOBAL_FREEMEM(self->gooseInterfaceId); #endif #if (CONFIG_IEC61850_SAMPLED_VALUES_SUPPORT == 1)