mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Fix memory leak in file analyzer.
This undoes the changes applied in merge9db27a6d60
and goes back to the state in the branch as of the merge5ab3b86
. Getting rid of the additional layer of removing analyzers and just keeping them in the set introduced subtle differences in behavior since a few calls were still passed along. Skipping all of these with SetSkip introduced yet other subtle behavioral differences.
This commit is contained in:
parent
7beac6e404
commit
1de6cfc2e3
3 changed files with 17 additions and 2 deletions
|
@ -119,6 +119,11 @@ public:
|
|||
*/
|
||||
bool RemoveAnalyzer(file_analysis::Tag tag, RecordVal* args);
|
||||
|
||||
/**
|
||||
* Signal that this analyzer can be deleted once it's safe to do so.
|
||||
*/
|
||||
void DoneWithAnalyzer(Analyzer* analyzer);
|
||||
|
||||
/**
|
||||
* Pass in non-sequential data and deliver to attached analyzers.
|
||||
* @param data pointer to start of a chunk of file data.
|
||||
|
@ -287,6 +292,7 @@ protected:
|
|||
bool postpone_timeout; /**< Whether postponing timeout is requested. */
|
||||
bool done; /**< If this object is about to be deleted. */
|
||||
AnalyzerSet analyzers; /**< A set of attached file analyzers. */
|
||||
std::list<Analyzer *> done_analyzers; /**< Analyzers we're done with, remembered here until they can be safely deleted. */
|
||||
|
||||
struct BOF_Buffer {
|
||||
BOF_Buffer() : full(false), size(0) {}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue