From 5b457807e2384b79ce3ef954f3d87bd24ba6f2f6 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Thu, 31 May 2012 19:09:47 +0200 Subject: [PATCH] file: fix file length and md5 tracking when file storing is disabled --- src/util-file.c | 42 ++++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/src/util-file.c b/src/util-file.c index 7e3f4f8aab..47ca1aa495 100644 --- a/src/util-file.c +++ b/src/util-file.c @@ -422,6 +422,16 @@ int FileAppendData(FileContainer *ffc, uint8_t *data, uint32_t data_len) { } if (FileStoreNoStoreCheck(ffc->tail) == 1) { +#ifdef HAVE_NSS + /* no storage but forced md5 */ + if (g_file_force_md5) { + if (ffc->tail->md5_ctx) + HASH_Update(ffc->tail->md5_ctx, data, data_len); + + ffc->tail->size += data_len; + SCReturnInt(0); + } +#endif ffc->tail->state = FILE_STATE_CLOSED; SCLogDebug("flowfile state transitioned to FILE_STATE_CLOSED"); SCReturnInt(-2); @@ -521,17 +531,29 @@ static int FileCloseFilePtr(File *ff, uint8_t *data, if (data != NULL) { //PrintRawDataFp(stdout, data, data_len); - FileData *ffd = FileDataAlloc(data, data_len); - if (ffd == NULL) { - ff->state = FILE_STATE_ERROR; - SCReturnInt(-1); - } + if (ff->store == -1) { +#ifdef HAVE_NSS + /* no storage but forced md5 */ + if (g_file_force_md5) { + if (ff->md5_ctx) + HASH_Update(ff->md5_ctx, data, data_len); - /* append the data */ - if (FileAppendFileDataFilePtr(ff, ffd) < 0) { - ff->state = FILE_STATE_ERROR; - FileDataFree(ffd); - SCReturnInt(-1); + ff->size += data_len; + } +#endif + } else { + FileData *ffd = FileDataAlloc(data, data_len); + if (ffd == NULL) { + ff->state = FILE_STATE_ERROR; + SCReturnInt(-1); + } + + /* append the data */ + if (FileAppendFileDataFilePtr(ff, ffd) < 0) { + ff->state = FILE_STATE_ERROR; + FileDataFree(ffd); + SCReturnInt(-1); + } } } -- 2.47.2