void DetectionEngine::set_file_data(const DataPointer& dp)
{ Snort::get_switcher()->get_context()->file_data = dp; }
-void DetectionEngine::get_file_data(DataPointer& dp)
-{ dp = Snort::get_switcher()->get_context()->file_data; }
+DataPointer& DetectionEngine::get_file_data(IpsContext* c)
+{ return c->file_data; }
void DetectionEngine::set_data(unsigned id, IpsContextData* p)
{ Snort::get_switcher()->get_context()->set_context_data(id, p); }
static void set_encode_packet(Packet*);
static Packet* get_encode_packet();
- static void set_file_data(const DataPointer&);
- static void get_file_data(DataPointer&);
+ static void set_file_data(const DataPointer& dp);
+ static DataPointer& get_file_data(IpsContext*);
static uint8_t* get_buffer(unsigned& max);
static struct DataBuffer& get_alt_buffer(Packet*);
static void set_data(unsigned id, IpsContextData*);
static IpsContextData* get_data(unsigned id);
- static IpsContextData* get_data(unsigned id, IpsContext* context);
+ static IpsContextData* get_data(unsigned id, IpsContext*);
static void add_replacement(const std::string&, unsigned);
static bool get_replacement(std::string&, unsigned&);
}
static inline void clear_file_data()
-{
- set_file_data(nullptr, 0);
-}
+{ set_file_data(nullptr, 0); }
} // namespace snort
#endif
char flowbits_setoperation = 0;
int loop_count = 0;
uint32_t tmp_byte_extract_vars[NUM_IPS_OPTIONS_VARS];
- uint64_t cur_eval_context_num = DetectionEngine::get_context()->context_num;
if ( !eval_data || !eval_data->p || !eval_data->pomd )
return 0;
+ uint64_t cur_eval_context_num = eval_data->p->context->context_num;
+
node_eval_trace(node, cursor, eval_data->p);
auto p = eval_data->p;
// class methods
//-------------------------------------------------------------------------
-IpsOption::EvalStatus FileDataOption::eval(Cursor& c, Packet*)
+IpsOption::EvalStatus FileDataOption::eval(Cursor& c, Packet* p)
{
Profile profile(fileDataPerfStats);
- DataPointer dp;
- DetectionEngine::get_file_data(dp);
+ DataPointer dp = DetectionEngine::get_file_data(p->context);
if ( !dp.data || !dp.len )
return NO_MATCH;
{
LogCharData(log, p->data, p->dsize);
- DataPointer file_data;
- DetectionEngine::get_file_data(file_data);
+ DataPointer file_data = DetectionEngine::get_file_data(p->context);
if ( file_data.len > 0 )
{
{
LogNetData(log, p->data, p->dsize, p);
- DataPointer file_data;
- DetectionEngine::get_file_data(file_data);
+ DataPointer file_data = DetectionEngine::get_file_data(p->context);
if ( file_data.len > 0 )
{
Http2FlowData* const session_data =
(Http2FlowData*)p->flow->get_flow_data(Http2FlowData::inspector_id);
- set_file_data(session_data->frame_data[source_id], session_data->frame_data_size[source_id]);
+ set_file_data(session_data->frame_data[source_id],
+ session_data->frame_data_size[source_id]);
session_data->frame_in_detection = true;
#ifdef REG_TEST