diff --git a/src/goose/goose_receiver.c b/src/goose/goose_receiver.c index afae2565..cbd10383 100644 --- a/src/goose/goose_receiver.c +++ b/src/goose/goose_receiver.c @@ -650,7 +650,15 @@ parseGoosePayload(GooseReceiver self, uint8_t* buffer, int apduLength) matchingSubscriber->confRev = confRev; matchingSubscriber->ndsCom = ndsCom; matchingSubscriber->simulation = simulation; - MmsValue_setUtcTimeByBuffer(matchingSubscriber->timestamp, timestampBufPos); + + if (timestampBufPos) + MmsValue_setUtcTimeByBuffer(matchingSubscriber->timestamp, timestampBufPos); + else { + if (DEBUG_GOOSE_SUBSCRIBER) + printf("GOOSE_SUBSCRIBER: GOOSE message has no time stamp\n"); + + MmsValue_setUtcTime(matchingSubscriber->timestamp, 0); + } if (matchingSubscriber->dataSetValues == NULL) matchingSubscriber->dataSetValues = parseAllDataUnknownValue(matchingSubscriber, dataSetBufferAddress, dataSetBufferLength, false); diff --git a/src/mms/iso_mms/common/mms_value.c b/src/mms/iso_mms/common/mms_value.c index 4336372f..e63321a2 100644 --- a/src/mms/iso_mms/common/mms_value.c +++ b/src/mms/iso_mms/common/mms_value.c @@ -744,11 +744,13 @@ MmsValue_getUtcTimeQuality(const MmsValue* self) void MmsValue_setUtcTimeByBuffer(MmsValue* self, const uint8_t* buffer) { - uint8_t* valueArray = self->value.utcTime; + if (buffer) { + uint8_t* valueArray = self->value.utcTime; - int i; - for (i = 0; i < 8; i++) { - valueArray[i] = buffer[i]; + int i; + for (i = 0; i < 8; i++) { + valueArray[i] = buffer[i]; + } } }