From 951213ddb6c477ef39758aa223b02ae9130dbf8b Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Tue, 13 Feb 2018 17:10:02 -0800 Subject: [PATCH] capture-reader: cleanup some space checks Add a few more assertions to make sure we have what we think we have. Also we can drop self->pos from our while loop checks as it will always be zero. --- lib/capture/sp-capture-reader.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/capture/sp-capture-reader.c b/lib/capture/sp-capture-reader.c index 1ee85409..495bd297 100644 --- a/lib/capture/sp-capture-reader.c +++ b/lib/capture/sp-capture-reader.c @@ -214,21 +214,22 @@ sp_capture_reader_ensure_space_for (SpCaptureReader *self, gsize len) { g_assert (self != NULL); + g_assert (self->pos <= self->len); g_assert (len > 0); if ((self->len - self->pos) < len) { gssize r; - g_assert (self->len >= self->pos); - - memmove (self->buf, &self->buf[self->pos], self->len - self->pos); + if (self->len > self->pos) + memmove (self->buf, &self->buf[self->pos], self->len - self->pos); self->len -= self->pos; self->pos = 0; - while ((self->len - self->pos) <= len) + while (self->len < len) { - g_assert (self->pos + self->len < self->bufsz); + g_assert ((self->pos + self->len) < self->bufsz); + g_assert (self->len < self->bufsz); /* Read into our buffer after our current read position */ r = pread (self->fd, @@ -285,6 +286,7 @@ sp_capture_reader_peek_frame (SpCaptureReader *self, g_assert (self != NULL); g_assert ((self->pos % SP_CAPTURE_ALIGN) == 0); + g_assert (self->pos <= self->len); g_assert (self->pos <= self->bufsz); if (!sp_capture_reader_ensure_space_for (self, sizeof *real_frame))