[sysprof] capture-reader: cleanup some space checks



commit 951213ddb6c477ef39758aa223b02ae9130dbf8b
Author: Christian Hergert <chergert redhat com>
Date:   Tue Feb 13 17:10:02 2018 -0800

    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 files changed, 7 insertions(+), 5 deletions(-)
---
diff --git a/lib/capture/sp-capture-reader.c b/lib/capture/sp-capture-reader.c
index 1ee8540..495bd29 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))


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]