src: remove BUG_ON in packet path

Transforms them into debug validations

Ticket: 1484

Packet path is here considered FlowWorker and all lines
covered by SV tests are here fixed
pull/13557/head
Philippe Antoine 1 year ago committed by Victor Julien
parent 366b969463
commit ad0f6e388e

@ -982,7 +982,7 @@ static void DNP3HandleUserDataResponse(
tx->iin = *iin;
}
BUG_ON(tx->is_request);
DEBUG_VALIDATE_BUG_ON(tx->is_request);
if (!DNP3ReassembleApplicationLayer(input + sizeof(DNP3LinkHeader),
input_len - sizeof(DNP3LinkHeader), &tx->buffer, &tx->buffer_len)) {

@ -160,7 +160,7 @@ Frame *FrameGetByIndex(Frames *frames, const uint32_t idx)
static Frame *FrameNew(Frames *frames, uint64_t offset, int64_t len)
{
BUG_ON(frames == NULL);
DEBUG_VALIDATE_BUG_ON(frames == NULL);
if (frames->cnt < FRAMES_STATIC_CNT) {
Frame *frame = &frames->sframes[frames->cnt];
@ -170,15 +170,15 @@ static Frame *FrameNew(Frames *frames, uint64_t offset, int64_t len)
frames->cnt++;
return frame;
} else if (frames->dframes == NULL) {
BUG_ON(frames->dyn_size != 0);
BUG_ON(frames->cnt != FRAMES_STATIC_CNT);
DEBUG_VALIDATE_BUG_ON(frames->dyn_size != 0);
DEBUG_VALIDATE_BUG_ON(frames->cnt != FRAMES_STATIC_CNT);
frames->dframes = SCCalloc(8, sizeof(Frame));
if (frames->dframes == NULL) {
return NULL;
}
frames->cnt++;
BUG_ON(frames->cnt != FRAMES_STATIC_CNT + 1);
DEBUG_VALIDATE_BUG_ON(frames->cnt != FRAMES_STATIC_CNT + 1);
frames->dyn_size = 8;
frames->dframes[0].offset = offset;
@ -186,12 +186,12 @@ static Frame *FrameNew(Frames *frames, uint64_t offset, int64_t len)
frames->dframes[0].id = ++frames->base_id;
return &frames->dframes[0];
} else {
BUG_ON(frames->cnt < FRAMES_STATIC_CNT);
DEBUG_VALIDATE_BUG_ON(frames->cnt < FRAMES_STATIC_CNT);
/* need to handle dynamic storage of frames now */
const uint16_t dyn_cnt = frames->cnt - FRAMES_STATIC_CNT;
if (dyn_cnt < frames->dyn_size) {
BUG_ON(frames->dframes == NULL);
DEBUG_VALIDATE_BUG_ON(frames->dframes == NULL);
// fall through
} else {
@ -262,7 +262,7 @@ static inline uint64_t FrameLeftEdge(const TcpStream *stream, const Frame *frame
SCLogDebug("frame_offset %" PRIi64 ", frame_data %" PRIi64 ", frame->len %" PRIi64,
frame_offset, frame_data, frame->len);
BUG_ON(frame_offset > app_progress);
DEBUG_VALIDATE_BUG_ON(frame_offset > app_progress);
/* length unknown, make sure to have at least 2500 */
if (frame->len < 0) {
@ -330,12 +330,14 @@ static int FrameSlide(const char *ds, Frames *frames, const TcpStream *stream, c
", next %" PRIu64,
(uint64_t)frames->left_edge_rel + STREAM_BASE_OFFSET(stream), frames->left_edge_rel,
STREAM_BASE_OFFSET(stream), STREAM_BASE_OFFSET(stream) + slide);
BUG_ON(frames == NULL);
DEBUG_VALIDATE_BUG_ON(frames == NULL);
SCLogDebug("%s frames %p: sliding %u bytes", ds, frames, slide);
uint64_t le = STREAM_APP_PROGRESS(stream);
const uint64_t next_base = STREAM_BASE_OFFSET(stream) + slide;
#if defined(DEBUG) || defined(DEBUG_VALIDATION)
const uint16_t start = frames->cnt;
uint16_t removed = 0;
#endif
uint16_t x = 0;
for (uint16_t i = 0; i < frames->cnt; i++) {
if (i < FRAMES_STATIC_CNT) {
@ -345,7 +347,9 @@ static int FrameSlide(const char *ds, Frames *frames, const TcpStream *stream, c
// remove by not incrementing 'x'
SCLogDebug("removing %p id %" PRIi64, frame, frame->id);
FrameClean(frame);
#if defined(DEBUG) || defined(DEBUG_VALIDATION)
removed++;
#endif
} else {
Frame *nframe = &frames->sframes[x];
FrameCopy(nframe, frame);
@ -363,7 +367,9 @@ static int FrameSlide(const char *ds, Frames *frames, const TcpStream *stream, c
// remove by not incrementing 'x'
SCLogDebug("removing %p id %" PRIi64, frame, frame->id);
FrameClean(frame);
#if defined(DEBUG) || defined(DEBUG_VALIDATION)
removed++;
#endif
} else {
Frame *nframe;
if (x >= FRAMES_STATIC_CNT) {
@ -395,7 +401,7 @@ static int FrameSlide(const char *ds, Frames *frames, const TcpStream *stream, c
snprintf(pf, sizeof(pf), "%s:post_slide", ds);
AppLayerFrameDumpForFrames(pf, frames);
#endif
BUG_ON(x != start - removed);
DEBUG_VALIDATE_BUG_ON(x != start - removed);
return 0;
}
@ -426,7 +432,7 @@ static void FrameFreeSingleFrame(Frames *frames, Frame *r)
static void FramesClear(Frames *frames)
{
BUG_ON(frames == NULL);
DEBUG_VALIDATE_BUG_ON(frames == NULL);
SCLogDebug("frames %u", frames->cnt);
for (uint16_t i = 0; i < frames->cnt; i++) {
@ -446,7 +452,7 @@ static void FramesClear(Frames *frames)
void FramesFree(Frames *frames)
{
BUG_ON(frames == NULL);
DEBUG_VALIDATE_BUG_ON(frames == NULL);
FramesClear(frames);
SCFree(frames->dframes);
frames->dframes = NULL;
@ -471,9 +477,9 @@ Frame *AppLayerFrameNewByPointer(Flow *f, const StreamSlice *stream_slice,
frame_start > stream_slice->input + stream_slice->input_len)
return NULL;
#endif
BUG_ON(frame_start < stream_slice->input);
BUG_ON(stream_slice->input == NULL);
BUG_ON(f->proto == IPPROTO_TCP && f->protoctx == NULL);
DEBUG_VALIDATE_BUG_ON(frame_start < stream_slice->input);
DEBUG_VALIDATE_BUG_ON(stream_slice->input == NULL);
DEBUG_VALIDATE_BUG_ON(f->proto == IPPROTO_TCP && f->protoctx == NULL);
ptrdiff_t ptr_offset = frame_start - stream_slice->input;
#ifdef DEBUG
@ -482,7 +488,7 @@ Frame *AppLayerFrameNewByPointer(Flow *f, const StreamSlice *stream_slice,
" (offset %" PRIu64 ")",
f, dir == 0 ? "toserver" : "toclient", frame_start, offset, len, stream_slice->offset);
#endif
BUG_ON(f->alparser == NULL);
DEBUG_VALIDATE_BUG_ON(f->alparser == NULL);
FramesContainer *frames_container = AppLayerFramesSetupContainer(f);
if (frames_container == NULL)
@ -508,7 +514,7 @@ Frame *AppLayerFrameNewByPointer(Flow *f, const StreamSlice *stream_slice,
static Frame *AppLayerFrameUdp(
Flow *f, const uint32_t frame_start_rel, const int64_t len, int dir, uint8_t frame_type)
{
BUG_ON(f->proto != IPPROTO_UDP);
DEBUG_VALIDATE_BUG_ON(f->proto != IPPROTO_UDP);
if (!(FrameConfigTypeIsEnabled(f->alproto, frame_type)))
return NULL;
@ -546,10 +552,10 @@ Frame *AppLayerFrameNewByRelativeOffset(Flow *f, const StreamSlice *stream_slice
if (stream_slice->input == NULL)
return NULL;
#else
BUG_ON(stream_slice->input == NULL);
DEBUG_VALIDATE_BUG_ON(stream_slice->input == NULL);
#endif
BUG_ON(f->proto == IPPROTO_TCP && f->protoctx == NULL);
BUG_ON(f->alparser == NULL);
DEBUG_VALIDATE_BUG_ON(f->proto == IPPROTO_TCP && f->protoctx == NULL);
DEBUG_VALIDATE_BUG_ON(f->alparser == NULL);
if (f->proto == IPPROTO_UDP) {
return AppLayerFrameUdp(f, frame_start_rel, len, dir, frame_type);
@ -608,12 +614,12 @@ Frame *AppLayerFrameNewByAbsoluteOffset(Flow *f, const StreamSlice *stream_slice
if (stream_slice->input == NULL)
return NULL;
#else
BUG_ON(stream_slice->input == NULL);
DEBUG_VALIDATE_BUG_ON(stream_slice->input == NULL);
#endif
BUG_ON(f->proto == IPPROTO_TCP && f->protoctx == NULL);
BUG_ON(f->alparser == NULL);
BUG_ON(frame_start < stream_slice->offset);
BUG_ON(frame_start - stream_slice->offset >= (uint64_t)INT_MAX);
DEBUG_VALIDATE_BUG_ON(f->proto == IPPROTO_TCP && f->protoctx == NULL);
DEBUG_VALIDATE_BUG_ON(f->alparser == NULL);
DEBUG_VALIDATE_BUG_ON(frame_start < stream_slice->offset);
DEBUG_VALIDATE_BUG_ON(frame_start - stream_slice->offset >= (uint64_t)INT_MAX);
FramesContainer *frames_container = AppLayerFramesSetupContainer(f);
if (frames_container == NULL)
@ -747,15 +753,19 @@ static inline bool FrameIsDone(const Frame *frame, const uint64_t abs_right_edge
static void FramePrune(Frames *frames, const TcpStream *stream, const bool eof)
{
#ifdef DEBUG_VALIDATION
const uint64_t frames_le_start = (uint64_t)frames->left_edge_rel + STREAM_BASE_OFFSET(stream);
#endif
SCLogDebug("start: left edge %" PRIu64 ", left_edge_rel %u, stream base %" PRIu64,
(uint64_t)frames->left_edge_rel + STREAM_BASE_OFFSET(stream), frames->left_edge_rel,
STREAM_BASE_OFFSET(stream));
const uint64_t acked = StreamTcpGetUsable(stream, eof);
uint64_t le = STREAM_APP_PROGRESS(stream);
#if defined(DEBUG) || defined(DEBUG_VALIDATION)
const uint16_t start = frames->cnt;
uint16_t removed = 0;
#endif
uint16_t x = 0;
for (uint16_t i = 0; i < frames->cnt; i++) {
if (i < FRAMES_STATIC_CNT) {
@ -766,7 +776,9 @@ static void FramePrune(Frames *frames, const TcpStream *stream, const bool eof)
SCLogDebug("removing %p id %" PRIi64, frame, frame->id);
FrameDebug("remove(s)", frames, frame);
FrameClean(frame);
#if defined(DEBUG) || defined(DEBUG_VALIDATION)
removed++;
#endif
} else {
const uint64_t fle = FrameLeftEdge(stream, frame);
le = MIN(le, fle);
@ -787,7 +799,9 @@ static void FramePrune(Frames *frames, const TcpStream *stream, const bool eof)
SCLogDebug("removing %p id %" PRIi64, frame, frame->id);
FrameDebug("remove(d)", frames, frame);
FrameClean(frame);
#if defined(DEBUG) || defined(DEBUG_VALIDATION)
removed++;
#endif
} else {
const uint64_t fle = FrameLeftEdge(stream, frame);
le = MIN(le, fle);
@ -818,9 +832,9 @@ static void FramePrune(Frames *frames, const TcpStream *stream, const bool eof)
AppLayerFrameDumpForFrames("post_slide", frames);
#endif
if (frames->cnt > 0) { // if we removed all this can fail
BUG_ON(frames_le_start > le);
DEBUG_VALIDATE_BUG_ON(frames_le_start > le);
}
BUG_ON(x != start - removed);
DEBUG_VALIDATE_BUG_ON(x != start - removed);
}
void FramesPrune(Flow *f, Packet *p)

@ -1090,7 +1090,7 @@ static AppLayerResult FTPDataParse(Flow *f, FtpDataState *ftpdata_state,
}
}
BUG_ON((direction & ftpdata_state->direction) == 0); // should be unreachable
DEBUG_VALIDATE_BUG_ON((direction & ftpdata_state->direction) == 0); // should be unreachable
if (eof) {
ret = FileCloseFile(ftpdata_state->files, &sbcfg, NULL, 0, flags);
ftpdata_state->state = FTPDATA_STATE_FINISHED;

@ -607,7 +607,7 @@ static void HttpRangeBlockDerefContainer(HttpRangeContainerBlock *b)
void HttpRangeFreeBlock(HttpRangeContainerBlock *b)
{
if (b) {
BUG_ON(b->container == NULL && b->files != NULL);
DEBUG_VALIDATE_BUG_ON(b->container == NULL && b->files != NULL);
const StreamingBufferConfig *sbcfg = b->container ? b->container->sbcfg : NULL;
HttpRangeBlockDerefContainer(b);

@ -340,7 +340,7 @@ static void HTPParserRegisterTests(void);
static inline uint64_t HtpGetActiveRequestTxID(HtpState *s)
{
uint64_t id = HTPStateGetTxCnt(s);
BUG_ON(id == 0);
DEBUG_VALIDATE_BUG_ON(id == 0);
return id - 1;
}
@ -1404,7 +1404,7 @@ static int HTPCallbackRequestBodyData(const htp_connp_t *connp, htp_tx_data_t *d
uint32_t len = AppLayerHtpComputeChunkLength(tx_ud->request_body.content_len_so_far,
hstate->cfg->request.body_limit, stream_depth, tx_ud->tsflags,
(uint32_t)htp_tx_data_len(d));
BUG_ON(len > (uint32_t)htp_tx_data_len(d));
DEBUG_VALIDATE_BUG_ON(len > (uint32_t)htp_tx_data_len(d));
HtpBodyAppendChunk(&tx_ud->request_body, htp_tx_data_data(d), len);
@ -1525,7 +1525,7 @@ static int HTPCallbackResponseBodyData(const htp_connp_t *connp, htp_tx_data_t *
uint32_t len = AppLayerHtpComputeChunkLength(tx_ud->response_body.content_len_so_far,
hstate->cfg->response.body_limit, stream_depth, tx_ud->tcflags,
(uint32_t)htp_tx_data_len(d));
BUG_ON(len > (uint32_t)htp_tx_data_len(d));
DEBUG_VALIDATE_BUG_ON(len > (uint32_t)htp_tx_data_len(d));
HtpBodyAppendChunk(&tx_ud->response_body, htp_tx_data_data(d), len);

@ -50,7 +50,7 @@ const char *AppProtoToString(AppProto alproto)
break;
default:
if (alproto < g_alproto_max) {
BUG_ON(g_alproto_strings[alproto].alproto != alproto);
DEBUG_VALIDATE_BUG_ON(g_alproto_strings[alproto].alproto != alproto);
proto_name = g_alproto_strings[alproto].str;
}
}

@ -696,7 +696,7 @@ static int StatsOutput(ThreadVars *tv)
sts = stats_ctx->sts;
SCLogDebug("sts %p", sts);
while (sts != NULL) {
BUG_ON(thread < 0);
DEBUG_VALIDATE_BUG_ON(thread < 0);
SCLogDebug("Thread %d %s ctx %p", thread, sts->name, sts->ctx);
@ -1104,10 +1104,14 @@ static int StatsThreadRegister(const char *thread_name, StatsPublicThreadContext
id = HashTableLookup(stats_ctx->counters_id_hash, &t, sizeof(t));
if (id == NULL) {
id = SCCalloc(1, sizeof(*id));
BUG_ON(id == NULL);
DEBUG_VALIDATE_BUG_ON(id == NULL);
id->id = counters_global_id++;
id->string = pc->name;
BUG_ON(HashTableAdd(stats_ctx->counters_id_hash, id, sizeof(*id)) < 0);
#ifdef DEBUG_VALIDATION
DEBUG_VALIDATE_BUG_ON(HashTableAdd(stats_ctx->counters_id_hash, id, sizeof(*id)) < 0);
#else
HashTableAdd(stats_ctx->counters_id_hash, id, sizeof(*id));
#endif
}
pc->gid = id->id;
pc = pc->next;

@ -140,7 +140,7 @@ ExceptionPolicyStatsSetts flow_memcap_eps_stats = {
PacketAlert *PacketAlertCreate(void)
{
PacketAlert *pa_array = SCCalloc(packet_alert_max, sizeof(PacketAlert));
BUG_ON(pa_array == NULL);
DEBUG_VALIDATE_BUG_ON(pa_array == NULL);
return pa_array;
}

@ -156,7 +156,7 @@ int DetectByteMathDoMatch(DetectEngineThreadCtx *det_ctx, const DetectByteMathDa
}
}
BUG_ON(extbytes > len);
DEBUG_VALIDATE_BUG_ON(extbytes > len);
ptr += extbytes;

@ -173,7 +173,7 @@ static void PrefilterMpmFrame(DetectEngineThreadCtx *det_ctx, const void *pectx,
PREFILTER_PROFILING_ADD_BYTES(det_ctx, data_len);
}
} else if (p->proto == IPPROTO_TCP) {
BUG_ON(p->flow->protoctx == NULL);
DEBUG_VALIDATE_BUG_ON(p->flow->protoctx == NULL);
TcpSession *ssn = p->flow->protoctx;
TcpStream *stream;
if (PKT_IS_TOSERVER(p)) {
@ -228,7 +228,7 @@ int PrefilterGenericMpmFrameRegister(DetectEngineCtx *de_ctx, SigGroupHead *sgh,
bool DetectRunFrameInspectRule(ThreadVars *tv, DetectEngineThreadCtx *det_ctx, const Signature *s,
Flow *f, Packet *p, const Frames *frames, const Frame *frame)
{
BUG_ON(s->frame_inspect == NULL);
DEBUG_VALIDATE_BUG_ON(s->frame_inspect == NULL);
SCLogDebug("inspecting rule %u against frame %p/%" PRIi64 "/%s", s->id, frame, frame->id,
AppLayerParserGetFrameNameById(f->proto, f->alproto, frame->type));
@ -367,7 +367,7 @@ static bool BufferSetup(struct FrameStreamData *fsd, InspectionBuffer *buffer, c
}
/* in: relative to start of input data */
BUG_ON(so_inspect_offset < input_offset);
DEBUG_VALIDATE_BUG_ON(so_inspect_offset < input_offset);
DEBUG_VALIDATE_BUG_ON(so_inspect_offset - input_offset > UINT32_MAX);
const uint32_t in_data_offset = (uint32_t)(so_inspect_offset - input_offset);
data += in_data_offset;
@ -382,7 +382,7 @@ static bool BufferSetup(struct FrameStreamData *fsd, InspectionBuffer *buffer, c
data_len = input_len - in_data_offset - in_data_excess;
} else {
/* in: relative to start of input data */
BUG_ON(so_inspect_offset < input_offset);
DEBUG_VALIDATE_BUG_ON(so_inspect_offset < input_offset);
DEBUG_VALIDATE_BUG_ON(so_inspect_offset - input_offset > UINT32_MAX);
const uint32_t in_data_offset = (uint32_t)(so_inspect_offset - input_offset);
data += in_data_offset;
@ -475,7 +475,7 @@ static int FrameStreamDataInspectFunc(
// PrintRawDataFp(stdout, data, data_len);
// PrintRawDataFp(stdout, data, MIN(64, data_len));
#endif
BUG_ON(fsd->frame->len > 0 && (int64_t)data_len > fsd->frame->len);
DEBUG_VALIDATE_BUG_ON(fsd->frame->len > 0 && (int64_t)data_len > fsd->frame->len);
const bool match = DetectEngineContentInspection(det_ctx->de_ctx, det_ctx, s, engine->smd, p,
p->flow, data, data_len, data_offset, buffer->flags,
@ -578,7 +578,7 @@ int DetectEngineInspectFrameBufferGeneric(DetectEngineThreadCtx *det_ctx,
", list:%d, transforms:%p, s:%p, s->id:%u, engine:%p",
p->pcap_cnt, frame->id, engine->sm_list, engine->v1.transforms, s, s->id, engine);
BUG_ON(p->flow->protoctx == NULL);
DEBUG_VALIDATE_BUG_ON(p->flow->protoctx == NULL);
TcpSession *ssn = p->flow->protoctx;
TcpStream *stream;
if (PKT_IS_TOSERVER(p)) {

@ -118,7 +118,7 @@ static inline void InspectionBufferApplyTransformsInternal(DetectEngineThreadCtx
const int id = transforms->transforms[i].transform;
if (id == 0)
break;
BUG_ON(sigmatch_table[id].Transform == NULL);
DEBUG_VALIDATE_BUG_ON(sigmatch_table[id].Transform == NULL);
sigmatch_table[id].Transform(det_ctx, buffer, transforms->transforms[i].options);
SCLogDebug("applied transform %s", sigmatch_table[id].name);
}

@ -4637,7 +4637,7 @@ DetectEngineCtx *DetectEngineGetByTenantId(uint32_t tenant_id)
void DetectEngineDeReference(DetectEngineCtx **de_ctx)
{
BUG_ON((*de_ctx)->ref_cnt == 0);
DEBUG_VALIDATE_BUG_ON((*de_ctx)->ref_cnt == 0);
(*de_ctx)->ref_cnt--;
*de_ctx = NULL;
}

@ -387,7 +387,7 @@ static InspectionBuffer *FiledataGetDataCallback(DetectEngineThreadCtx *det_ctx,
}
} else {
uint64_t new_data = file_size - cur_file->content_inspected;
BUG_ON(new_data == 0);
DEBUG_VALIDATE_BUG_ON(new_data == 0);
if (new_data < cur_file->inspect_window) {
uint64_t inspect_short = cur_file->inspect_window - new_data;
if (cur_file->content_inspected < inspect_short) {

@ -218,7 +218,7 @@ static int DetectXbitTxMatch(DetectEngineThreadCtx *det_ctx, Flow *f, uint8_t fl
void *txv, const Signature *s, const SigMatchCtx *ctx)
{
const DetectXbitsData *xd = (const DetectXbitsData *)ctx;
BUG_ON(xd == NULL);
DEBUG_VALIDATE_BUG_ON(xd == NULL);
AppLayerTxData *txd = AppLayerParserGetTxData(f->proto, f->alproto, txv);

@ -114,7 +114,7 @@ static void CloseFile(const Packet *p, Flow *f, File *file, void *txv)
DEBUG_VALIDATE_BUG_ON((file->flags & FILE_STORED) != 0);
AppLayerTxData *txd = AppLayerParserGetTxData(f->proto, f->alproto, txv);
BUG_ON(f->alproto == ALPROTO_SMB && txd->files_logged != 0);
DEBUG_VALIDATE_BUG_ON(f->alproto == ALPROTO_SMB && txd->files_logged != 0);
txd->files_stored++;
file->flags |= FILE_STORED;
}

@ -233,7 +233,7 @@ static int JsonFileLogger(ThreadVars *tv, void *thread_data, const Packet *p, co
SCEnter();
JsonFileLogThread *aft = (JsonFileLogThread *)thread_data;
BUG_ON(ff->flags & FILE_LOGGED);
DEBUG_VALIDATE_BUG_ON(ff->flags & FILE_LOGGED);
SCLogDebug("ff %p", ff);

@ -326,7 +326,7 @@ static int FrameJson(ThreadVars *tv, JsonFrameLogThread *aft, const Packet *p)
{
FrameJsonOutputCtx *json_output_ctx = aft->json_output_ctx;
BUG_ON(p->flow == NULL);
DEBUG_VALIDATE_BUG_ON(p->flow == NULL);
FramesContainer *frames_container = AppLayerFramesGetContainer(p->flow);
if (frames_container == NULL)
@ -336,8 +336,8 @@ static int FrameJson(ThreadVars *tv, JsonFrameLogThread *aft, const Packet *p)
return FrameJsonUdp(tv, aft, p, p->flow, frames_container);
}
BUG_ON(p->proto != IPPROTO_TCP);
BUG_ON(p->flow->protoctx == NULL);
DEBUG_VALIDATE_BUG_ON(p->proto != IPPROTO_TCP);
DEBUG_VALIDATE_BUG_ON(p->flow->protoctx == NULL);
/* TODO can we set these EOF flags once per packet? We have them in detect, tx, file, filedata,
* etc */

@ -292,7 +292,7 @@ static int LuaFileLogger(ThreadVars *tv, void *thread_data, const Packet *p, con
if ((!(PacketIsIPv4(p))) && (!(PacketIsIPv6(p))))
return 0;
BUG_ON(ff->flags & FILE_LOGGED);
DEBUG_VALIDATE_BUG_ON(ff->flags & FILE_LOGGED);
SCLogDebug("ff %p", ff);

@ -159,6 +159,7 @@ static inline void OutputTxLogFiles(ThreadVars *tv, OutputFileLoggerThreadData *
opposing_tx_ready = ts_ready;
} else {
DEBUG_VALIDATE_BUG_ON(1);
return;
}
SCLogDebug("eof %d ts_ready %d ts_eof %d", eof, ts_ready, ts_eof);

@ -432,7 +432,7 @@ static TmEcode DecodePcapFile(ThreadVars *tv, Packet *p, void *data)
SCEnter();
DecodeThreadVars *dtv = (DecodeThreadVars *)data;
BUG_ON(PKT_IS_PSEUDOPKT(p));
DEBUG_VALIDATE_BUG_ON(PKT_IS_PSEUDOPKT(p));
/* update counters */
DecodeUpdatePacketCounters(tv, dtv, p);

@ -98,7 +98,7 @@ int StreamTcpInlineSegmentCompare(const TcpStream *stream,
uint32_t range = end - seq;
SCLogDebug("range %u", range);
BUG_ON(range > 65536);
DEBUG_VALIDATE_BUG_ON(range > 65536);
if (range) {
int r = SCMemcmp(p->payload + pkt_off, seg_data + seg_off, range);
@ -154,7 +154,7 @@ void StreamTcpInlineSegmentReplacePacket(const TcpStream *stream,
uint32_t range = end - seq;
SCLogDebug("range %u", range);
BUG_ON(range > 65536);
DEBUG_VALIDATE_BUG_ON(range > 65536);
if (range) {
/* update the packets payload. As payload is a ptr to either

@ -1147,7 +1147,7 @@ static bool GetAppBuffer(const TcpStream *stream, const uint8_t **data, uint32_t
SCLogDebug("blk at offset");
StreamingBufferSBBGetData(&stream->sb, blk, data, data_len);
BUG_ON(blk->len != *data_len);
DEBUG_VALIDATE_BUG_ON(blk->len != *data_len);
gap_ahead = check_for_gap && GapAhead(stream, blk);
@ -1247,9 +1247,8 @@ static inline uint32_t AdjustToAcked(const Packet *p,
/* see if the buffer contains unack'd data as well */
if (app_progress <= last_ack_abs && app_progress + data_len > last_ack_abs) {
uint32_t check = data_len;
adjusted = (uint32_t)(last_ack_abs - app_progress);
BUG_ON(adjusted > check);
DEBUG_VALIDATE_BUG_ON(adjusted > data_len);
SCLogDebug("data len adjusted to %u to make sure only ACK'd "
"data is considered", adjusted);
}
@ -1750,7 +1749,7 @@ static int StreamReassembleRawInline(TcpSession *ssn, const Packet *p,
/* run the callback */
r = Callback(cb_data, mydata, mydata_len, mydata_offset);
BUG_ON(r < 0);
DEBUG_VALIDATE_BUG_ON(r < 0);
if (return_progress) {
*progress_out = (mydata_offset + mydata_len);
@ -1847,9 +1846,11 @@ static int StreamReassembleRawDo(const TcpSession *ssn, const TcpStream *stream,
/* see if the buffer contains unack'd data as well */
if (progress + mydata_len > re) {
#ifdef DEBUG_VALIDATION
uint32_t check = mydata_len;
#endif
mydata_len = (uint32_t)(re - progress);
BUG_ON(check < mydata_len);
DEBUG_VALIDATE_BUG_ON(check < mydata_len);
SCLogDebug("data len adjusted to %u to make sure only ACK'd "
"data is considered", mydata_len);
}
@ -1861,7 +1862,7 @@ static int StreamReassembleRawDo(const TcpSession *ssn, const TcpStream *stream,
/* we have data. */
r = Callback(cb_data, mydata, mydata_len, mydata_offset);
BUG_ON(r < 0);
DEBUG_VALIDATE_BUG_ON(r < 0);
if (mydata_offset == progress) {
SCLogDebug("progress %"PRIu64" increasing with data len %u to %"PRIu64,

@ -1800,7 +1800,7 @@ static inline bool StateSynSentValidateTimestamp(TcpSession *ssn, Packet *p)
static void TcpStateQueueInitFromSsnSyn(const TcpSession *ssn, TcpStateQueue *q)
{
BUG_ON(ssn->state != TCP_SYN_SENT); // TODO
DEBUG_VALIDATE_BUG_ON(ssn->state != TCP_SYN_SENT); // TODO
memset(q, 0, sizeof(*q));
/* SYN won't use wscale yet. So window should be limited to 16 bits. */

@ -2360,7 +2360,7 @@ void TmThreadsInitThreadsTimestamp(const SCTime_t ts)
SCTime_t TmThreadsGetThreadTime(const int idx)
{
BUG_ON(idx == 0);
DEBUG_VALIDATE_BUG_ON(idx == 0);
const int i = idx - 1;
Thread *t = &thread_store.threads[i];
return SC_ATOMIC_GET(t->pktts);

@ -368,7 +368,7 @@ static SCError SCLogMessageGetBuffer(SCTime_t tval, bool color, SCLogOPType type
/* no of characters_written(cw) by snprintf */
int cw = 0;
BUG_ON(sc_log_module_initialized != 1);
DEBUG_VALIDATE_BUG_ON(sc_log_module_initialized != 1);
/* make a copy of the format string as it will be modified below */
const int add_M = strstr(log_format, "%M") == NULL;

@ -214,7 +214,7 @@ static int SCLogFileWriteNoLock(const char *buffer, int buffer_len, LogFileCtx *
{
int ret = 0;
BUG_ON(log_ctx->is_sock);
DEBUG_VALIDATE_BUG_ON(log_ctx->is_sock);
/* Check for rotation. */
if (log_ctx->rotation_flag) {

@ -58,7 +58,7 @@ static void *LuaAlloc(void *ud, void *ptr, size_t osize, size_t nsize)
/* This happens, ignore. */
return NULL;
}
BUG_ON(osize > ctx->alloc_bytes);
DEBUG_VALIDATE_BUG_ON(osize > ctx->alloc_bytes);
SCFree(ptr);
ctx->alloc_bytes -= osize;
return NULL;
@ -82,8 +82,8 @@ static void *LuaAlloc(void *ud, void *ptr, size_t osize, size_t nsize)
void *nptr = SCRealloc(ptr, nsize);
if (nptr != NULL) {
BUG_ON((ssize_t)ctx->alloc_bytes + diff < 0);
BUG_ON(osize > ctx->alloc_bytes);
DEBUG_VALIDATE_BUG_ON((ssize_t)ctx->alloc_bytes + diff < 0);
DEBUG_VALIDATE_BUG_ON(osize > ctx->alloc_bytes);
ctx->alloc_bytes += diff;
}
return nptr;

@ -1049,8 +1049,8 @@ uint32_t SCHSSearch(const MpmCtx *mpm_ctx, MpmThreadCtx *mpm_thread_ctx,
/* scratch should have been cloned from g_scratch_proto at thread init. */
hs_scratch_t *scratch = hs_thread_ctx->scratch;
BUG_ON(pd->hs_db == NULL);
BUG_ON(scratch == NULL);
DEBUG_VALIDATE_BUG_ON(pd->hs_db == NULL);
DEBUG_VALIDATE_BUG_ON(scratch == NULL);
hs_error_t err = hs_scan(pd->hs_db, (const char *)buf, buflen, 0, scratch,
SCHSMatchEvent, &cctx);

@ -34,6 +34,7 @@
#include "util-pool-thread.h"
#include "util-unittest.h"
#include "util-debug.h"
#include "util-validate.h"
/**
* \brief per thread Pool, initialization function
@ -206,21 +207,21 @@ void PoolThreadReturn(PoolThread *pt, void *data)
void PoolThreadLock(PoolThread *pt, PoolThreadId id)
{
BUG_ON(pt == NULL || id >= pt->size);
DEBUG_VALIDATE_BUG_ON(pt == NULL || id >= pt->size);
PoolThreadElement *e = &pt->array[id];
SCMutexLock(&e->lock);
}
void PoolThreadReturnRaw(PoolThread *pt, PoolThreadId id, void *data)
{
BUG_ON(pt == NULL || id >= pt->size);
DEBUG_VALIDATE_BUG_ON(pt == NULL || id >= pt->size);
PoolThreadElement *e = &pt->array[id];
PoolReturn(e->pool, data);
}
void PoolThreadUnlock(PoolThread *pt, PoolThreadId id)
{
BUG_ON(pt == NULL || id >= pt->size);
DEBUG_VALIDATE_BUG_ON(pt == NULL || id >= pt->size);
PoolThreadElement *e = &pt->array[id];
SCMutexUnlock(&e->lock);
}

@ -215,7 +215,7 @@ static int NetmaskCount(RADIX_NODE_TYPE *node)
static int ContainNetmaskAndSetUserData(
RADIX_NODE_TYPE *node, uint8_t netmask, bool exact_match, void **user_data_result)
{
BUG_ON(!node);
DEBUG_VALIDATE_BUG_ON(!node);
RadixUserData *user_data = node->user_data;
/* Check if we have a match for an exact ip. An exact ip as in not a proper

@ -28,6 +28,7 @@
#include "util-spm.h"
#include "util-spm-hs.h"
#include "util-debug.h"
#include "util-validate.h"
#ifdef BUILD_HYPERSCAN
@ -41,7 +42,7 @@ static int MatchEvent(unsigned int id, unsigned long long from,
unsigned long long to, unsigned int flags, void *context)
{
uint64_t *match_offset = context;
BUG_ON(*match_offset != UINT64_MAX);
DEBUG_VALIDATE_BUG_ON(*match_offset != UINT64_MAX);
*match_offset = to;
return 1; /* Terminate matching. */
}
@ -158,7 +159,7 @@ static uint8_t *HSScan(const SpmCtx *ctx, SpmThreadCtx *thread_ctx,
return NULL;
}
BUG_ON(match_offset < sctx->needle_len);
DEBUG_VALIDATE_BUG_ON(match_offset < sctx->needle_len);
/* Note: existing API returns non-const ptr */
return (uint8_t *)haystack + (match_offset - sctx->needle_len);

@ -600,7 +600,11 @@ static THashData *THashDataGetNew(THashTableContext *ctx, void *data)
}
// setup the data
BUG_ON(ctx->config.DataSet(h->data, data) != 0);
#ifdef DEBUG_VALIDATION
DEBUG_VALIDATE_BUG_ON(ctx->config.DataSet(h->data, data) != 0);
#else
ctx->config.DataSet(h->data, data);
#endif
(void) SC_ATOMIC_ADD(ctx->counter, 1);
SCMutexLock(&h->m);
return h;

Loading…
Cancel
Save