From 5096aaaebc2d0f5a013c884ebd7e5a386908d007 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Wed, 10 Jul 2024 17:57:23 +0100 Subject: [PATCH] - goose-sec: update length field before CRC calculation in publisher --- src/goose/goose_publisher.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/goose/goose_publisher.c b/src/goose/goose_publisher.c index f9059bec..9707f14f 100644 --- a/src/goose/goose_publisher.c +++ b/src/goose/goose_publisher.c @@ -497,6 +497,9 @@ GoosePublisher_publish(GoosePublisher self, LinkedList dataSet) int secExtLength = 0; + self->buffer[lengthIndex] = gooseLength / 256; + self->buffer[lengthIndex + 1] = gooseLength & 0xff; + if (self->l2Security) { /* calculate crc */ uint16_t crc = L2Security_calculateCRC16(self->buffer + self->gooseStart, 8); @@ -516,9 +519,6 @@ GoosePublisher_publish(GoosePublisher self, LinkedList dataSet) printf("reserved1: %02x %02x\n", self->buffer[self->gooseStart + 6], self->buffer[self->gooseStart + 7]); } - self->buffer[lengthIndex] = gooseLength / 256; - self->buffer[lengthIndex + 1] = gooseLength & 0xff; - gooseLength += secExtLength; Ethernet_sendPacket(self->ethernetSocket, self->buffer, self->payloadStart + self->payloadLength + secExtLength);