From eae1924c5c303a8b173643a13518e6e37a53ed2e Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Wed, 2 Mar 2016 12:45:37 -0800 Subject: [PATCH] Fix corruption when we parse multiple packets form a single buffer. --- adsbus/receive.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/adsbus/receive.c b/adsbus/receive.c index 3537139..fb88725 100644 --- a/adsbus/receive.c +++ b/adsbus/receive.c @@ -117,10 +117,13 @@ static void receive_read(struct peer *peer) { return; } - struct packet packet = { - .source_id = receive->id, - }; - while (receive->buf.length && receive->parser_wrapper(receive, &packet)) { + while (receive->buf.length) { + struct packet packet = { + .source_id = receive->id, + }; + if (!receive->parser_wrapper(receive, &packet)) { + break; + } if (packet.type == PACKET_TYPE_NONE) { continue; }