From 98c1a5c45879917741de9dbe0c739986d6dfa477 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Sat, 27 Feb 2016 22:53:57 -0800 Subject: [PATCH] Fix length tracking for parsing. --- adsbus/raw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/adsbus/raw.c b/adsbus/raw.c index f0c6625..bcceb3d 100644 --- a/adsbus/raw.c +++ b/adsbus/raw.c @@ -21,8 +21,8 @@ static bool raw_parse_packet(struct buf *buf, struct packet *packet, enum packet struct raw_overlay *overlay = (struct raw_overlay *) buf_at(buf, overlay_start); size_t total_len = overlay_start + sizeof(*overlay); - if (((buf->length < sizeof(*overlay) - 1 || overlay->cr_lf != '\n') && - (buf->length < sizeof(*overlay) || overlay->cr_lf != '\r' || overlay->lf != '\n')) || + if (((buf->length < total_len - 1 || overlay->cr_lf != '\n') && + (buf->length < total_len || overlay->cr_lf != '\r' || overlay->lf != '\n')) || buf_chr(buf, 0) != '*' || overlay->semicolon != ';') { return false;