streaming/buffer: turn BUG_ON's into validate checks

pull/9021/head
Victor Julien 2 years ago
parent db1cb2a032
commit 55c6c45ea7

@ -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;
}
}

Loading…
Cancel
Save