]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
streaming/buffer: turn BUG_ON's into validate checks
authorVictor Julien <vjulien@oisf.net>
Tue, 13 Jun 2023 09:25:20 +0000 (11:25 +0200)
committerVictor Julien <vjulien@oisf.net>
Tue, 13 Jun 2023 11:12:14 +0000 (13:12 +0200)
src/util-streaming-buffer.c

index 3956e7ccf9b9ed6d08471a304e754da64bff76bc..fe6b9f70f177fb268cebf113e9fbb040ef94ff8b 100644 (file)
@@ -426,7 +426,7 @@ static inline void ConsolidateFwd(StreamingBuffer *sb, const StreamingBufferConf
                     region->buf_size);
             if (sa->offset == region->stream_offset &&
                     sa_re > (region->stream_offset + region->buf_offset)) {
-                BUG_ON(sa_re < region->stream_offset);
+                DEBUG_VALIDATE_BUG_ON(sa_re < region->stream_offset);
                 region->buf_offset = sa_re - region->stream_offset;
                 SCLogDebug("-> (fwd) tr %p %" PRIu64 "/%u region %p so %" PRIu64
                            " bo %u sz %u BUF_OFFSET UPDATED",
@@ -456,7 +456,7 @@ static inline void ConsolidateFwd(StreamingBuffer *sb, const StreamingBufferConf
                     region->buf_size);
             if (sa->offset == region->stream_offset &&
                     sa_re > (region->stream_offset + region->buf_offset)) {
-                BUG_ON(sa_re < region->stream_offset);
+                DEBUG_VALIDATE_BUG_ON(sa_re < region->stream_offset);
                 region->buf_offset = sa_re - region->stream_offset;
                 SCLogDebug("-> (fwd) tr %p %" PRIu64 "/%u region %p so %" PRIu64
                            " bo %u sz %u BUF_OFFSET UPDATED",
@@ -523,7 +523,7 @@ static inline void ConsolidateBackward(StreamingBuffer *sb, const StreamingBuffe
 
             if (sa->offset == region->stream_offset &&
                     sa_re > (region->stream_offset + region->buf_offset)) {
-                BUG_ON(sa_re < region->stream_offset);
+                DEBUG_VALIDATE_BUG_ON(sa_re < region->stream_offset);
                 region->buf_offset = sa_re - region->stream_offset;
                 SCLogDebug("-> (bwd) tr %p %" PRIu64 "/%u region %p so %" PRIu64
                            " bo %u sz %u BUF_OFFSET UPDATED",
@@ -555,7 +555,7 @@ static inline void ConsolidateBackward(StreamingBuffer *sb, const StreamingBuffe
                     region->buf_size);
             if (sa->offset == region->stream_offset &&
                     sa_re > (region->stream_offset + region->buf_offset)) {
-                BUG_ON(sa_re < region->stream_offset);
+                DEBUG_VALIDATE_BUG_ON(sa_re < region->stream_offset);
                 region->buf_offset = sa_re - region->stream_offset;
                 SCLogDebug("-> (bwd) tr %p %" PRIu64 "/%u region %p so %" PRIu64
                            " bo %u sz %u BUF_OFFSET UPDATED",
@@ -632,7 +632,7 @@ static void SBBPrune(StreamingBuffer *sb, const StreamingBufferConfig *cfg)
                 SCLogDebug("set buf_offset?");
                 if (sbb->offset == sb->region.stream_offset) {
                     SCLogDebug("set buf_offset to first sbb len %u", sbb->len);
-                    BUG_ON(sbb->len > sb->region.buf_size);
+                    DEBUG_VALIDATE_BUG_ON(sbb->len > sb->region.buf_size);
                     sb->region.buf_offset = sbb->len;
                 }
             }
@@ -654,7 +654,7 @@ static void SBBPrune(StreamingBuffer *sb, const StreamingBufferConfig *cfg)
             sb->head = sbb;
             if (sbb->offset == sb->region.stream_offset) {
                 SCLogDebug("set buf_offset to first sbb len %u", sbb->len);
-                BUG_ON(sbb->len > sb->region.buf_size);
+                DEBUG_VALIDATE_BUG_ON(sbb->len > sb->region.buf_size);
                 sb->region.buf_offset = sbb->len;
             }
             break;
@@ -772,7 +772,7 @@ static inline void StreamingBufferSlideToOffsetWithRegions(
         StreamingBuffer *sb, const StreamingBufferConfig *cfg, const uint64_t slide_offset)
 {
     ListRegions(sb);
-    BUG_ON(slide_offset == sb->region.stream_offset);
+    DEBUG_VALIDATE_BUG_ON(slide_offset == sb->region.stream_offset);
 
     SCLogDebug("slide_offset %" PRIu64, slide_offset);
     SCLogDebug("main: offset %" PRIu64 " buf %p size %u offset %u", sb->region.stream_offset,
@@ -803,13 +803,13 @@ static inline void StreamingBufferSlideToOffsetWithRegions(
             if (RegionBeforeOffset(r, slide_offset)) {
                 SCLogDebug("r %p so %" PRIu64 ", re %" PRIu64 " -> before", r, r->stream_offset,
                         r->stream_offset + r->buf_offset);
-                BUG_ON(r == &sb->region);
+                DEBUG_VALIDATE_BUG_ON(r == &sb->region);
                 prev->next = next;
 
                 FREE(cfg, r->buf, r->buf_size);
                 FREE(cfg, r, sizeof(*r));
                 sb->regions--;
-                BUG_ON(sb->regions == 0);
+                DEBUG_VALIDATE_BUG_ON(sb->regions == 0);
             } else if (RegionContainsOffset(r, slide_offset)) {
                 SCLogDebug("r %p so %" PRIu64 ", re %" PRIu64 " -> within", r, r->stream_offset,
                         r->stream_offset + r->buf_offset);
@@ -821,7 +821,7 @@ static inline void StreamingBufferSlideToOffsetWithRegions(
                 SCLogDebug("r %p so %" PRIu64 ", re %" PRIu64 " -> post", r, r->stream_offset,
                         r->stream_offset + r->buf_offset);
                 /* implied beyond slide offset */
-                BUG_ON(r->stream_offset < slide_offset);
+                DEBUG_VALIDATE_BUG_ON(r->stream_offset < slide_offset);
                 break;
             }
             r = next;
@@ -837,7 +837,7 @@ static inline void StreamingBufferSlideToOffsetWithRegions(
         SCLogDebug("main: offset %" PRIu64 " buf %p size %u offset %u", to_shift->stream_offset,
                 to_shift->buf, to_shift->buf_size, to_shift->buf_offset);
         if (to_shift != &sb->region) {
-            BUG_ON(sb->region.buf != NULL);
+            DEBUG_VALIDATE_BUG_ON(sb->region.buf != NULL);
 
             sb->region.buf = to_shift->buf;
             sb->region.stream_offset = to_shift->stream_offset;
@@ -848,11 +848,11 @@ static inline void StreamingBufferSlideToOffsetWithRegions(
             FREE(cfg, to_shift, sizeof(*to_shift));
             to_shift = &sb->region;
             sb->regions--;
-            BUG_ON(sb->regions == 0);
+            DEBUG_VALIDATE_BUG_ON(sb->regions == 0);
         }
 
         // Do the shift. If new region is exactly at the slide offset we can skip this.
-        BUG_ON(to_shift->stream_offset > slide_offset);
+        DEBUG_VALIDATE_BUG_ON(to_shift->stream_offset > slide_offset);
         const uint32_t s = slide_offset - to_shift->stream_offset;
         if (s > 0) {
             const uint32_t new_data_size = to_shift->buf_size - s;
@@ -915,7 +915,7 @@ static inline void StreamingBufferSlideToOffsetWithRegions(
                     // free "next"
                     FREE(cfg, next, sizeof(*next));
                     sb->regions--;
-                    BUG_ON(sb->regions == 0);
+                    DEBUG_VALIDATE_BUG_ON(sb->regions == 0);
                     goto done;
                 } else {
                     /* using "main", expand to include "next" */
@@ -946,7 +946,7 @@ static inline void StreamingBufferSlideToOffsetWithRegions(
                     FREE(cfg, next->buf, next->buf_size);
                     FREE(cfg, next, sizeof(*next));
                     sb->regions--;
-                    BUG_ON(sb->regions == 0);
+                    DEBUG_VALIDATE_BUG_ON(sb->regions == 0);
                     goto done;
                 }
             }
@@ -996,12 +996,12 @@ void StreamingBufferSlideToOffset(
 #ifdef DEBUG
         SBBPrintList(sb);
 #endif
-        BUG_ON(sb->region.buf != NULL && sb->region.buf_size == 0);
-        BUG_ON(sb->region.buf_offset > sb->region.buf_size);
-        BUG_ON(offset > sb->region.stream_offset);
-        BUG_ON(sb->head && sb->head->offset == sb->region.stream_offset &&
-                sb->head->len > sb->region.buf_offset);
-        BUG_ON(sb->region.stream_offset < offset);
+        DEBUG_VALIDATE_BUG_ON(sb->region.buf != NULL && sb->region.buf_size == 0);
+        DEBUG_VALIDATE_BUG_ON(sb->region.buf_offset > sb->region.buf_size);
+        DEBUG_VALIDATE_BUG_ON(offset > sb->region.stream_offset);
+        DEBUG_VALIDATE_BUG_ON(sb->head && sb->head->offset == sb->region.stream_offset &&
+                              sb->head->len > sb->region.buf_offset);
+        DEBUG_VALIDATE_BUG_ON(sb->region.stream_offset < offset);
         return;
     }
 
@@ -1043,7 +1043,7 @@ void StreamingBufferSlideToOffset(
 #ifdef DEBUG
     SBBPrintList(sb);
 #endif
-    BUG_ON(sb->region.stream_offset < offset);
+    DEBUG_VALIDATE_BUG_ON(sb->region.stream_offset < offset);
 }
 
 #define DATA_FITS(sb, len) ((sb)->region.buf_offset + (len) <= (sb)->region.buf_size)
@@ -1051,7 +1051,7 @@ void StreamingBufferSlideToOffset(
 int StreamingBufferAppend(StreamingBuffer *sb, const StreamingBufferConfig *cfg,
         StreamingBufferSegment *seg, const uint8_t *data, uint32_t data_len)
 {
-    BUG_ON(seg == NULL);
+    DEBUG_VALIDATE_BUG_ON(seg == NULL);
 
     if (sb->region.buf == NULL) {
         if (InitBuffer(sb, cfg) == -1)
@@ -1253,7 +1253,7 @@ static StreamingBufferRegion *BufferInsertAtRegionConsolidate(StreamingBuffer *s
             memcpy(dst->buf, src_start->buf, src_start->buf_offset);
         if (src_start == src_end) {
             SCLogDebug("src_start == src_end == main, we're done");
-            BUG_ON(src_start != dst);
+            DEBUG_VALIDATE_BUG_ON(src_start != dst);
             return src_start;
         }
         prev = src_start;
@@ -1276,15 +1276,15 @@ static StreamingBufferRegion *BufferInsertAtRegionConsolidate(StreamingBuffer *s
         }
         const uint32_t target_offset = r->stream_offset - dst_offset;
         SCLogDebug("r %p: target_offset %u", r, target_offset);
-        BUG_ON(target_offset > dst->buf_size);
-        BUG_ON(target_offset + r->buf_size > dst->buf_size);
+        DEBUG_VALIDATE_BUG_ON(target_offset > dst->buf_size);
+        DEBUG_VALIDATE_BUG_ON(target_offset + r->buf_size > dst->buf_size);
         memcpy(dst->buf + target_offset, r->buf, r->buf_size);
 
         StreamingBufferRegion *next = r->next;
         FREE(cfg, r->buf, r->buf_size);
         FREE(cfg, r, sizeof(*r));
         sb->regions--;
-        BUG_ON(sb->regions == 0);
+        DEBUG_VALIDATE_BUG_ON(sb->regions == 0);
 
         DEBUG_VALIDATE_BUG_ON(prev == NULL && src_start != &sb->region);
         if (prev != NULL) {
@@ -1303,7 +1303,7 @@ static StreamingBufferRegion *BufferInsertAtRegionConsolidate(StreamingBuffer *s
      * region we expand. In this case we'll have main and dst. We will
      * move the buffer from dst into main and free dst. */
     if (start_is_main && dst != &sb->region) {
-        BUG_ON(sb->region.next != dst);
+        DEBUG_VALIDATE_BUG_ON(sb->region.next != dst);
         SCLogDebug("start_is_main && dst != main region");
         FREE(cfg, sb->region.buf, sb->region.buf_size);
         sb->region.buf = dst->buf;
@@ -1314,7 +1314,7 @@ static StreamingBufferRegion *BufferInsertAtRegionConsolidate(StreamingBuffer *s
         FREE(cfg, dst, sizeof(*dst));
         dst = &sb->region;
         sb->regions--;
-        BUG_ON(sb->regions == 0);
+        DEBUG_VALIDATE_BUG_ON(sb->regions == 0);
     } else {
         SCLogDebug("dst: %p next %p", dst, dst->next);
     }
@@ -1461,7 +1461,7 @@ int StreamingBufferInsertAt(StreamingBuffer *sb, const StreamingBufferConfig *cf
 {
     int r;
 
-    BUG_ON(seg == NULL);
+    DEBUG_VALIDATE_BUG_ON(seg == NULL);
     DEBUG_VALIDATE_BUG_ON(offset < sb->region.stream_offset);
     if (offset < sb->region.stream_offset) {
         return SC_EINVAL;
@@ -1562,11 +1562,11 @@ int StreamingBufferInsertAt(StreamingBuffer *sb, const StreamingBufferConfig *cf
         if ((r = SBBUpdate(sb, cfg, region, rel_offset, data_len)) != SC_OK)
             return r;
     }
-    BUG_ON(!region_is_main && sb->head == NULL);
+    DEBUG_VALIDATE_BUG_ON(!region_is_main && sb->head == NULL);
 
     ListRegions(sb);
     if (RB_EMPTY(&sb->sbb_tree)) {
-        BUG_ON(offset + data_len > sb->region.stream_offset + sb->region.buf_offset);
+        DEBUG_VALIDATE_BUG_ON(offset + data_len > sb->region.stream_offset + sb->region.buf_offset);
     }
 
     return SC_OK;
@@ -1621,7 +1621,7 @@ void StreamingBufferSBBGetData(const StreamingBuffer *sb,
             SCLogDebug("1");
             uint64_t offset = sbb->offset - region->stream_offset;
             *data = region->buf + offset;
-            BUG_ON(offset + sbb->len > region->buf_size);
+            DEBUG_VALIDATE_BUG_ON(offset + sbb->len > region->buf_size);
             *data_len = sbb->len;
             return;
         } else {
@@ -1665,14 +1665,14 @@ void StreamingBufferSBBGetDataAtOffset(const StreamingBuffer *sb,
                 *data_len = region->buf_size - data_offset;
             else
                 *data_len = sbblen;
-            BUG_ON(*data_len > sbblen);
+            DEBUG_VALIDATE_BUG_ON(*data_len > sbblen);
             return;
         } else {
             uint64_t data_offset = region->stream_offset - sbb->offset;
             if (data_offset < sbblen) {
                 *data = region->buf;
                 *data_len = sbblen - data_offset;
-                BUG_ON(*data_len > sbblen);
+                DEBUG_VALIDATE_BUG_ON(*data_len > sbblen);
                 return;
             }
         }