From 210cf30897631fe2006ac50483caf8fd616622a2 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Fri, 11 Mar 2022 19:15:52 +0100 Subject: [PATCH] - fixed - GOOSE subscriber is not processing octet string when longer than the one received at first time (LIB61850-232) --- src/goose/goose_receiver.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/goose/goose_receiver.c b/src/goose/goose_receiver.c index 033d2913..b6ea074c 100644 --- a/src/goose/goose_receiver.c +++ b/src/goose/goose_receiver.c @@ -277,6 +277,22 @@ parseAllData(uint8_t* buffer, int allDataLength, MmsValue* dataSetValues) value->value.octetString.size = elementLength; memcpy(value->value.octetString.buf, buffer + bufPos, elementLength); } + else { + uint8_t* newBuf = (uint8_t*)GLOBAL_MALLOC(elementLength); + + if (newBuf) { + memcpy(newBuf, buffer + bufPos, elementLength); + + uint8_t* oldBuf = value->value.octetString.buf; + + value->value.octetString.buf = newBuf; + value->value.octetString.maxSize = elementLength; + value->value.octetString.size = elementLength; + + GLOBAL_FREEMEM(oldBuf); + } + + } } else { pe = GOOSE_PARSE_ERROR_TYPE_MISMATCH;