if ((FileService::get_file_cache()->cached_verdict_lookup(p, this,
policy) != FILE_VERDICT_UNKNOWN))
+ {
+ processing_complete = true;
return true;
+ }
/*file type id*/
if (is_file_type_enabled())
{
int ret = 0;
- if (offset == 0)
+ if (offset < current_offset)
{
- current_offset = 0;
+ if (offset + data_size > current_offset)
+ {
+ file_data += (current_offset - offset);
+ data_size = (offset + data_size) - current_offset;
+ offset = current_offset;
+ }
+ else
+ {
+ return 1;
+ }
}
// Walk through the segments that can be flushed
request = request->next;
}
- request = (Smb2Request*)snort_calloc(sizeof(*request));
-
- ssd->outstanding_requests++;
-
- if (ssd->outstanding_requests >= ssd->max_outstanding_requests)
+ if ( ssd->outstanding_requests >= (ssd->max_outstanding_requests - 1) )
{
dce_alert(GID_DCE2, DCE2_SMB_MAX_REQS_EXCEEDED, (dce2CommonStats*)&dce2_smb_stats,
ssd->sd);
- snort_free((void*)request);
return;
}
+ request = ( Smb2Request* )snort_alloc( sizeof( *request ) );
+
+ ssd->outstanding_requests++;
+
request->message_id = message_id;
request->offset = offset;
request->file_id = file_id;