streaming: remove BUG_ON and other improvements

Can be triggered by memory limits.
pull/2673/head
Victor Julien 10 years ago
parent d789dc7e6d
commit 3fa2e8689c

@ -728,7 +728,9 @@ int StreamingBufferInsertAt(StreamingBuffer *sb, StreamingBufferSegment *seg,
return -1;
}
}
BUG_ON(!DATA_FITS_AT_OFFSET(sb, data_len, rel_offset));
if (!DATA_FITS_AT_OFFSET(sb, data_len, rel_offset)) {
return -1;
}
memcpy(sb->buf + rel_offset, data, data_len);
seg->stream_offset = offset;
@ -846,20 +848,22 @@ void StreamingBufferSegmentGetData(const StreamingBuffer *sb,
const StreamingBufferSegment *seg,
const uint8_t **data, uint32_t *data_len)
{
if (seg->stream_offset >= sb->stream_offset) {
uint64_t offset = seg->stream_offset - sb->stream_offset;
*data = sb->buf + offset;
if (offset + seg->segment_len > sb->buf_size)
*data_len = sb->buf_size - offset;
else
*data_len = seg->segment_len;
return;
} else {
uint64_t offset = sb->stream_offset - seg->stream_offset;
if (offset < seg->segment_len) {
*data = sb->buf;
*data_len = seg->segment_len - offset;
if (likely(sb->buf)) {
if (seg->stream_offset >= sb->stream_offset) {
uint64_t offset = seg->stream_offset - sb->stream_offset;
*data = sb->buf + offset;
if (offset + seg->segment_len > sb->buf_size)
*data_len = sb->buf_size - offset;
else
*data_len = seg->segment_len;
return;
} else {
uint64_t offset = sb->stream_offset - seg->stream_offset;
if (offset < seg->segment_len) {
*data = sb->buf;
*data_len = seg->segment_len - offset;
return;
}
}
}
*data = NULL;
@ -942,7 +946,10 @@ int StreamingBufferCompareRawData(const StreamingBuffer *sb,
return 1;
}
SCLogDebug("sbdata_len %u, offset %u", sbdata_len, (uint)offset);
//PrintRawDataFp(stdout, sbdata,sbdata_len);
printf("got:\n");
PrintRawDataFp(stdout, sbdata,sbdata_len);
printf("wanted:\n");
PrintRawDataFp(stdout, rawdata,rawdata_len);
return 0;
}

Loading…
Cancel
Save