{
SCEnter();
- SCReturnCT(pstate->log_id, "uint64_t");
+ SCReturnCT((pstate == NULL) ? 0 : pstate->log_id, "uint64_t");
}
void AppLayerParserSetTransactionLogId(AppLayerParserState *pstate)
{
SCEnter();
- pstate->log_id++;
+ if (pstate != NULL)
+ pstate->log_id++;
SCReturn;
}
{
SCEnter();
+ if (pstate == NULL)
+ SCReturnCT(0ULL, "uint64_t");
+
SCReturnCT(pstate->inspect_id[direction & STREAM_TOSERVER ? 0 : 1], "uint64_t");
}
return;
}
+/**
+ * \retval 0 no inspectable state
+ * \retval 1 inspectable state
+ * \retval 2 inspectable state, but no update
+ */
int DeStateFlowHasInspectableState(Flow *f, AppProto alproto, uint16_t alversion, uint8_t flags)
{
int r = 0;
if (f->de_state == NULL || f->de_state->dir_state[flags & STREAM_TOSERVER ? 0 : 1].cnt == 0) {
if (AppLayerParserProtocolSupportsTxs(f->proto, alproto)) {
FLOWLOCK_RDLOCK(f);
- if (AppLayerParserGetTransactionInspectId(f->alparser, flags) >= AppLayerParserGetTxCnt(f->proto, alproto, f->alstate))
- r = 2;
- else
- r = 0;
+ if (f->alparser != NULL && f->alstate != NULL) {
+ if (AppLayerParserGetTransactionInspectId(f->alparser, flags) >=
+ AppLayerParserGetTxCnt(f->proto, alproto, f->alstate)) {
+ r = 2;
+ }
+ }
FLOWLOCK_UNLOCK(f);
}
} else if (!(flags & STREAM_EOF) &&