Struct - Unbekannte Größe eines Arrays - Was mache ich Falsch ?

Leider keine Verbesserung:

struct PACKET {
  uint8_t header;
  uint8_t length;
  uint8_t function;
  uint8_t multivar;
  uint8_t source[4];
  uint8_t destination[4];
  uint8_t *payload;
};

void setup()
{
  Serial3.begin(57600);
}

void loop()
{
struct PACKET packet;
  packet.payload = (uint8_t *)malloc(12 * sizeof(uint8_t));
  packet.header = 1;
  packet.length = 2;
  packet.function = 3;
  packet.multivar = 4;

  packet.source[0] = 5;
  packet.source[1] = 6;
  packet.source[2] = 7;
  packet.source[3] = 8;
  packet.destination[0] = 9;
  packet.destination[1] = 10;
  packet.destination[2] = 11;
  packet.destination[3] = 12;
  // Bis hier ist die Ausgabe noch OK
  packet.payload[0] = 13;
  packet.payload[1] = 14;
  packet.payload[2] = 15;
  packet.payload[3] = 16;
  packet.payload[4] = 17;
  packet.payload[5] = 18;
  
  
  
  

  uint8_t packetSize = sizeof(packet);
  uint8_t bufferSize = packetSize;
  uint8_t outBuffer[bufferSize];
  
  memcpy(outBuffer, &packet, packetSize);
  for(int i = 0; i<sizeof(packet);i++) {
    Serial3.print(outBuffer[i]);
  }
  Serial3.println();
  free(packet.payload);
}

Ausgabe:
12345678910111215214225531