file: update loops to account for parallel files

pull/2705/head
Victor Julien 9 years ago
parent c4c93872f8
commit ae99e08396

@ -106,44 +106,44 @@ static int DetectFileInspect(ThreadVars *tv, DetectEngineThreadCtx *det_ctx,
if ((s->file_flags & FILE_SIG_NEED_FILENAME) && file->name == NULL) { if ((s->file_flags & FILE_SIG_NEED_FILENAME) && file->name == NULL) {
SCLogDebug("sig needs filename, but we don't have any"); SCLogDebug("sig needs filename, but we don't have any");
r = DETECT_ENGINE_INSPECT_SIG_NO_MATCH; r = DETECT_ENGINE_INSPECT_SIG_NO_MATCH;
break; continue;
} }
uint64_t file_size = FileDataSize(file); uint64_t file_size = FileDataSize(file);
if ((s->file_flags & FILE_SIG_NEED_MAGIC) && file_size == 0) { if ((s->file_flags & FILE_SIG_NEED_MAGIC) && file_size == 0) {
SCLogDebug("sig needs file content, but we don't have any"); SCLogDebug("sig needs file content, but we don't have any");
r = DETECT_ENGINE_INSPECT_SIG_NO_MATCH; r = DETECT_ENGINE_INSPECT_SIG_NO_MATCH;
break; continue;
} }
if ((s->file_flags & FILE_SIG_NEED_FILECONTENT) && file_size == 0) { if ((s->file_flags & FILE_SIG_NEED_FILECONTENT) && file_size == 0) {
SCLogDebug("sig needs file content, but we don't have any"); SCLogDebug("sig needs file content, but we don't have any");
r = DETECT_ENGINE_INSPECT_SIG_NO_MATCH; r = DETECT_ENGINE_INSPECT_SIG_NO_MATCH;
break; continue;
} }
if ((s->file_flags & FILE_SIG_NEED_MD5) && (!(file->flags & FILE_MD5))) { if ((s->file_flags & FILE_SIG_NEED_MD5) && (!(file->flags & FILE_MD5))) {
SCLogDebug("sig needs file md5, but we don't have any"); SCLogDebug("sig needs file md5, but we don't have any");
r = DETECT_ENGINE_INSPECT_SIG_NO_MATCH; r = DETECT_ENGINE_INSPECT_SIG_NO_MATCH;
break; continue;
} }
if ((s->file_flags & FILE_SIG_NEED_SHA1) && (!(file->flags & FILE_SHA1))) { if ((s->file_flags & FILE_SIG_NEED_SHA1) && (!(file->flags & FILE_SHA1))) {
SCLogDebug("sig needs file sha1, but we don't have any"); SCLogDebug("sig needs file sha1, but we don't have any");
r = DETECT_ENGINE_INSPECT_SIG_NO_MATCH; r = DETECT_ENGINE_INSPECT_SIG_NO_MATCH;
break; continue;
} }
if ((s->file_flags & FILE_SIG_NEED_SHA256) && (!(file->flags & FILE_SHA256))) { if ((s->file_flags & FILE_SIG_NEED_SHA256) && (!(file->flags & FILE_SHA256))) {
SCLogDebug("sig needs file sha256, but we don't have any"); SCLogDebug("sig needs file sha256, but we don't have any");
r = DETECT_ENGINE_INSPECT_SIG_NO_MATCH; r = DETECT_ENGINE_INSPECT_SIG_NO_MATCH;
break; continue;
} }
if ((s->file_flags & FILE_SIG_NEED_SIZE) && file->state < FILE_STATE_CLOSED) { if ((s->file_flags & FILE_SIG_NEED_SIZE) && file->state < FILE_STATE_CLOSED) {
SCLogDebug("sig needs filesize, but state < FILE_STATE_CLOSED"); SCLogDebug("sig needs filesize, but state < FILE_STATE_CLOSED");
r = DETECT_ENGINE_INSPECT_SIG_NO_MATCH; r = DETECT_ENGINE_INSPECT_SIG_NO_MATCH;
break; continue;
} }
/* run the file match functions. */ /* run the file match functions. */

@ -345,8 +345,10 @@ void FilePrune(FileContainer *ffc)
File *file = ffc->head; File *file = ffc->head;
while (file) { while (file) {
if (FilePruneFile(file) == 0) if (FilePruneFile(file) == 0) {
break; file = file->next;
continue;
}
BUG_ON(file != ffc->head); BUG_ON(file != ffc->head);

Loading…
Cancel
Save