From 99e7d26e67723bbd5d28df2d16694dee49647271 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiesner=20Andr=C3=A1s?= Date: Fri, 24 Feb 2023 13:03:08 +0100 Subject: [PATCH] packsieve expects dynmem_alloc() allocated payloads, buffers get released when processing is done --- packet_sieve.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packet_sieve.c b/packet_sieve.c index f755d39..cec5bce 100644 --- a/packet_sieve.c +++ b/packet_sieve.c @@ -28,7 +28,7 @@ void packsieve_input(PcktSieve *sieve, const RawPckt *rawPckt) { // extract fields uint8_t *data = rawPckt->payload; uint32_t size = rawPckt->size; - bool mrd = false; // 'Must Release Data': at the end of processing not only release headers but data buffer as well + bool mrd = true; // 'Must Release Data': at the end of processing not only release headers but data buffer as well restart:; // process payload, fetch packet class etc. @@ -63,6 +63,7 @@ void packsieve_input(PcktSieve *sieve, const RawPckt *rawPckt) { procRet = cdesc->procFun(data + offset, size - offset, header, sieve->intf, &pb); switch (procRet) { case PROC_FN_RET_REPRST: + dynmem_free(data); // release previous packet data data = pb.p; // store new packet data size = pb.u; mrd = pb.b;