diff --git a/src/operators/fuzzy_hash.cc b/src/operators/fuzzy_hash.cc index 705178ee..20228ab5 100644 --- a/src/operators/fuzzy_hash.cc +++ b/src/operators/fuzzy_hash.cc @@ -84,6 +84,17 @@ bool FuzzyHash::init(const std::string ¶m2, std::string *error) { #endif } +FuzzyHash::~FuzzyHash() { + struct fuzzy_hash_chunk *c = m_head; + while (c) { + struct fuzzy_hash_chunk *t = c; + free(c->data); + c->data = NULL; + c = c->next; + free (t); + } + m_head = NULL; +} bool FuzzyHash::evaluate(Transaction *t, const std::string &str) { diff --git a/src/operators/fuzzy_hash.h b/src/operators/fuzzy_hash.h index 9936e692..2bb94ff5 100644 --- a/src/operators/fuzzy_hash.h +++ b/src/operators/fuzzy_hash.h @@ -29,7 +29,7 @@ namespace operators { struct fuzzy_hash_chunk { - const char *data; + char *data; struct fuzzy_hash_chunk *next; }; @@ -44,6 +44,8 @@ class FuzzyHash : public Operator { : Operator("FuzzyHash", param), m_head(NULL), m_threshold(0) { } + ~FuzzyHash(); + bool evaluate(Transaction *transaction, const std::string &std) override; bool init(const std::string ¶m, std::string *error) override;