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