@ -88,9 +88,7 @@ static uint32_t g_file_store_reassembly_depth = 0;
/* prototypes */
static void FileFree ( File * ) ;
# ifdef HAVE_NSS
static void FileEndSha256 ( File * ff ) ;
# endif
void FileForceFilestoreEnable ( void )
{
@ -183,12 +181,8 @@ void FileForceHashParseCfg(ConfNode *conf)
" found. Please use 'force-hash: [md5]' instead " ) ;
if ( ConfValIsTrue ( force_md5 ) ) {
# ifdef HAVE_NSS
FileForceMd5Enable ( ) ;
SCLogInfo ( " forcing md5 calculation for logged files " ) ;
# else
SCLogInfo ( " md5 calculation requires linking against libnss " ) ;
# endif
}
}
@ -200,30 +194,18 @@ void FileForceHashParseCfg(ConfNode *conf)
TAILQ_FOREACH ( field , & forcehash_node - > head , next ) {
if ( strcasecmp ( " md5 " , field - > val ) = = 0 ) {
# ifdef HAVE_NSS
FileForceMd5Enable ( ) ;
SCLogConfig ( " forcing md5 calculation for logged or stored files " ) ;
# else
SCLogInfo ( " md5 calculation requires linking against libnss " ) ;
# endif
}
if ( strcasecmp ( " sha1 " , field - > val ) = = 0 ) {
# ifdef HAVE_NSS
FileForceSha1Enable ( ) ;
SCLogConfig ( " forcing sha1 calculation for logged or stored files " ) ;
# else
SCLogInfo ( " sha1 calculation requires linking against libnss " ) ;
# endif
}
if ( strcasecmp ( " sha256 " , field - > val ) = = 0 ) {
# ifdef HAVE_NSS
FileForceSha256Enable ( ) ;
SCLogConfig ( " forcing sha256 calculation for logged or stored files " ) ;
# else
SCLogInfo ( " sha256 calculation requires linking against libnss " ) ;
# endif
}
}
}
@ -526,14 +508,12 @@ static void FileFree(File *ff)
StreamingBufferFree ( ff - > sb ) ;
}
# ifdef HAVE_NSS
if ( ff - > md5_ctx )
SCMd5Free ( ff - > md5_ctx ) ;
if ( ff - > sha1_ctx )
SCSha1Free ( ff - > sha1_ctx ) ;
if ( ff - > sha256_ctx )
SCSha256Free ( ff - > sha256_ctx ) ;
# endif
SCFree ( ff ) ;
}
@ -612,7 +592,6 @@ static int AppendData(File *file, const uint8_t *data, uint32_t data_len)
SCReturnInt ( - 1 ) ;
}
# ifdef HAVE_NSS
if ( file - > md5_ctx ) {
SCMd5Update ( file - > md5_ctx , data , data_len ) ;
}
@ -622,7 +601,6 @@ static int AppendData(File *file, const uint8_t *data, uint32_t data_len)
if ( file - > sha256_ctx ) {
SCSha256Update ( file - > sha256_ctx , data , data_len ) ;
}
# endif
SCReturnInt ( 0 ) ;
}
@ -670,7 +648,6 @@ static int FileAppendDataDo(File *ff, const uint8_t *data, uint32_t data_len)
if ( ( ff - > flags & FILE_USE_DETECT ) = = 0 & &
FileStoreNoStoreCheck ( ff ) = = 1 ) {
# ifdef HAVE_NSS
int hash_done = 0 ;
/* no storage but forced hashing */
if ( ff - > md5_ctx ) {
@ -688,7 +665,7 @@ static int FileAppendDataDo(File *ff, const uint8_t *data, uint32_t data_len)
if ( hash_done )
SCReturnInt ( 0 ) ;
# endif
if ( g_file_force_tracking | | ( ! ( ff - > flags & FILE_NOTRACK ) ) )
SCReturnInt ( 0 ) ;
@ -886,7 +863,6 @@ static File *FileOpenFile(FileContainer *ffc, const StreamingBufferConfig *sbcfg
ff - > flags | = FILE_USE_DETECT ;
}
# ifdef HAVE_NSS
if ( ! ( ff - > flags & FILE_NOMD5 ) | | g_file_force_md5 ) {
ff - > md5_ctx = SCMd5New ( ) ;
}
@ -896,7 +872,6 @@ static File *FileOpenFile(FileContainer *ffc, const StreamingBufferConfig *sbcfg
if ( ! ( ff - > flags & FILE_NOSHA256 ) | | g_file_force_sha256 ) {
ff - > sha256_ctx = SCSha256New ( ) ;
}
# endif
ff - > state = FILE_STATE_OPENED ;
SCLogDebug ( " flowfile state transitioned to FILE_STATE_OPENED " ) ;
@ -950,7 +925,6 @@ int FileCloseFilePtr(File *ff, const uint8_t *data,
if ( data ! = NULL ) {
ff - > size + = data_len ;
if ( ff - > flags & FILE_NOSTORE ) {
# ifdef HAVE_NSS
/* no storage but hashing */
if ( ff - > md5_ctx )
SCMd5Update ( ff - > md5_ctx , data , data_len ) ;
@ -958,7 +932,6 @@ int FileCloseFilePtr(File *ff, const uint8_t *data,
SCSha1Update ( ff - > sha1_ctx , data , data_len ) ;
if ( ff - > sha256_ctx )
SCSha256Update ( ff - > sha256_ctx , data , data_len ) ;
# endif
} else {
if ( AppendData ( ff , data , data_len ) ! = 0 ) {
ff - > state = FILE_STATE_ERROR ;
@ -975,17 +948,14 @@ int FileCloseFilePtr(File *ff, const uint8_t *data,
SCLogDebug ( " not storing this file " ) ;
ff - > flags | = FILE_NOSTORE ;
} else {
# ifdef HAVE_NSS
if ( g_file_force_sha256 & & ff - > sha256_ctx ) {
FileEndSha256 ( ff ) ;
}
# endif
}
} else {
ff - > state = FILE_STATE_CLOSED ;
SCLogDebug ( " flowfile state transitioned to FILE_STATE_CLOSED " ) ;
# ifdef HAVE_NSS
if ( ff - > md5_ctx ) {
SCMd5Finalize ( ff - > md5_ctx , ff - > md5 , sizeof ( ff - > md5 ) ) ;
ff - > md5_ctx = NULL ;
@ -999,7 +969,6 @@ int FileCloseFilePtr(File *ff, const uint8_t *data,
if ( ff - > sha256_ctx ) {
FileEndSha256 ( ff ) ;
}
# endif
}
SCReturnInt ( 0 ) ;
@ -1080,14 +1049,12 @@ void FileUpdateFlowFileFlags(Flow *f, uint16_t set_file_flags, uint8_t direction
if ( set_file_flags & ( FLOWFILE_NO_MAGIC_TS | FLOWFILE_NO_MAGIC_TC ) )
per_file_flags | = FILE_NOMAGIC ;
# endif
# ifdef HAVE_NSS
if ( set_file_flags & ( FLOWFILE_NO_MD5_TS | FLOWFILE_NO_MD5_TC ) )
per_file_flags | = FILE_NOMD5 ;
if ( set_file_flags & ( FLOWFILE_NO_SHA1_TS | FLOWFILE_NO_SHA1_TC ) )
per_file_flags | = FILE_NOSHA1 ;
if ( set_file_flags & ( FLOWFILE_NO_SHA256_TS | FLOWFILE_NO_SHA256_TC ) )
per_file_flags | = FILE_NOSHA256 ;
# endif
if ( set_file_flags & ( FLOWFILE_NO_SIZE_TS | FLOWFILE_NO_SIZE_TC ) )
per_file_flags | = FILE_NOTRACK ;
if ( set_file_flags & ( FLOWFILE_NO_STORE_TS | FLOWFILE_NO_STORE_TC ) )
@ -1098,7 +1065,6 @@ void FileUpdateFlowFileFlags(Flow *f, uint16_t set_file_flags, uint8_t direction
for ( File * ptr = ffc - > head ; ptr ! = NULL ; ptr = ptr - > next ) {
ptr - > flags | = per_file_flags ;
# ifdef HAVE_NSS
/* destroy any ctx we may have so far */
if ( ( per_file_flags & FILE_NOSHA256 ) & &
ptr - > sha256_ctx ! = NULL )
@ -1118,7 +1084,6 @@ void FileUpdateFlowFileFlags(Flow *f, uint16_t set_file_flags, uint8_t direction
SCMd5Free ( ptr - > md5_ctx ) ;
ptr - > md5_ctx = NULL ;
}
# endif
}
}
}
@ -1250,7 +1215,6 @@ void FileTruncateAllOpenFiles(FileContainer *fc)
/**
* \ brief Finish the SHA256 calculation .
*/
# ifdef HAVE_NSS
static void FileEndSha256 ( File * ff )
{
if ( ! ( ff - > flags & FILE_SHA256 ) & & ff - > sha256_ctx ) {
@ -1259,4 +1223,3 @@ static void FileEndSha256(File *ff)
ff - > flags | = FILE_SHA256 ;
}
}
# endif