diff --git a/src/goose/goose_receiver.c b/src/goose/goose_receiver.c index 60fcea6a..0af6a2a6 100644 --- a/src/goose/goose_receiver.c +++ b/src/goose/goose_receiver.c @@ -765,6 +765,7 @@ parseGoosePayload(GooseReceiver self, uint8_t* buffer, int apduLength) uint8_t tag = buffer[bufPos++]; bufPos = BerDecoder_decodeLength(buffer, &elementLength, bufPos, apduLength); + if (bufPos < 0) { if (DEBUG_GOOSE_SUBSCRIBER) @@ -772,9 +773,6 @@ parseGoosePayload(GooseReceiver self, uint8_t* buffer, int apduLength) return 0; } - if (bufPos == -1) - goto exit_with_fault; - switch (tag) { case 0x80: /* gocbRef */ @@ -1422,6 +1420,8 @@ GooseReceiver_tick(GooseReceiver self) #if (CONFIG_IEC61850_R_GOOSE == 1) } #endif /* (CONFIG_IEC61850_R_GOOSE == 1) */ + + return false; } void