mirror of
https://github.com/zeek/zeek.git
synced 2025-10-07 09:08:20 +00:00
Merge remote-tracking branch 'origin/fastpath'
Closes #986 * origin/fastpath: Do not allocate one OpaqueType per OpaqueVal. Fix memory-leak in OpaqueVal.
This commit is contained in:
commit
75cbce8ea4
6 changed files with 43 additions and 6 deletions
5
CHANGES
5
CHANGES
|
@ -1,4 +1,9 @@
|
||||||
|
|
||||||
|
2.1-496 | 2013-05-03 15:54:47 -0700
|
||||||
|
|
||||||
|
* Fix memory leak and unnecessary allocations in OpaqueVal.
|
||||||
|
Addresses #986. (Matthias Vallentin)
|
||||||
|
|
||||||
2.1-492 | 2013-05-02 12:46:26 -0700
|
2.1-492 | 2013-05-02 12:46:26 -0700
|
||||||
|
|
||||||
* Work-around for sumstats framework not propagating updates after
|
* Work-around for sumstats framework not propagating updates after
|
||||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
||||||
2.1-492
|
2.1-496
|
||||||
|
|
|
@ -239,6 +239,11 @@ TableType* record_field_table;
|
||||||
|
|
||||||
StringVal* cmd_line_bpf_filter;
|
StringVal* cmd_line_bpf_filter;
|
||||||
|
|
||||||
|
OpaqueType* md5_type;
|
||||||
|
OpaqueType* sha1_type;
|
||||||
|
OpaqueType* sha256_type;
|
||||||
|
OpaqueType* entropy_type;
|
||||||
|
|
||||||
#include "const.bif.netvar_def"
|
#include "const.bif.netvar_def"
|
||||||
#include "types.bif.netvar_def"
|
#include "types.bif.netvar_def"
|
||||||
#include "event.bif.netvar_def"
|
#include "event.bif.netvar_def"
|
||||||
|
@ -298,6 +303,11 @@ void init_general_global_var()
|
||||||
|
|
||||||
cmd_line_bpf_filter =
|
cmd_line_bpf_filter =
|
||||||
internal_val("cmd_line_bpf_filter")->AsStringVal();
|
internal_val("cmd_line_bpf_filter")->AsStringVal();
|
||||||
|
|
||||||
|
md5_type = new OpaqueType("md5");
|
||||||
|
sha1_type = new OpaqueType("sha1");
|
||||||
|
sha256_type = new OpaqueType("sha256");
|
||||||
|
entropy_type = new OpaqueType("entropy");
|
||||||
}
|
}
|
||||||
|
|
||||||
void init_net_var()
|
void init_net_var()
|
||||||
|
@ -346,7 +356,7 @@ void init_net_var()
|
||||||
opt_internal_int("tcp_excessive_data_without_further_acks");
|
opt_internal_int("tcp_excessive_data_without_further_acks");
|
||||||
|
|
||||||
x509_type = internal_type("X509")->AsRecordType();
|
x509_type = internal_type("X509")->AsRecordType();
|
||||||
|
|
||||||
socks_address = internal_type("SOCKS::Address")->AsRecordType();
|
socks_address = internal_type("SOCKS::Address")->AsRecordType();
|
||||||
|
|
||||||
non_analyzed_lifetime = opt_internal_double("non_analyzed_lifetime");
|
non_analyzed_lifetime = opt_internal_double("non_analyzed_lifetime");
|
||||||
|
|
|
@ -243,6 +243,12 @@ extern TableType* record_field_table;
|
||||||
|
|
||||||
extern StringVal* cmd_line_bpf_filter;
|
extern StringVal* cmd_line_bpf_filter;
|
||||||
|
|
||||||
|
class OpaqueType;
|
||||||
|
extern OpaqueType* md5_type;
|
||||||
|
extern OpaqueType* sha1_type;
|
||||||
|
extern OpaqueType* sha256_type;
|
||||||
|
extern OpaqueType* entropy_type;
|
||||||
|
|
||||||
// Initializes globals that don't pertain to network/event analysis.
|
// Initializes globals that don't pertain to network/event analysis.
|
||||||
extern void init_general_global_var();
|
extern void init_general_global_var();
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#include "OpaqueVal.h"
|
#include "OpaqueVal.h"
|
||||||
|
#include "NetVar.h"
|
||||||
#include "Reporter.h"
|
#include "Reporter.h"
|
||||||
#include "Serializer.h"
|
#include "Serializer.h"
|
||||||
|
|
||||||
|
@ -72,6 +73,10 @@ bool HashVal::DoUnserialize(UnserialInfo* info)
|
||||||
return UNSERIALIZE(&valid);
|
return UNSERIALIZE(&valid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MD5Val::MD5Val() : HashVal(md5_type)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void MD5Val::digest(val_list& vlist, u_char result[MD5_DIGEST_LENGTH])
|
void MD5Val::digest(val_list& vlist, u_char result[MD5_DIGEST_LENGTH])
|
||||||
{
|
{
|
||||||
MD5_CTX h;
|
MD5_CTX h;
|
||||||
|
@ -189,6 +194,10 @@ bool MD5Val::DoUnserialize(UnserialInfo* info)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SHA1Val::SHA1Val() : HashVal(sha1_type)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void SHA1Val::digest(val_list& vlist, u_char result[SHA_DIGEST_LENGTH])
|
void SHA1Val::digest(val_list& vlist, u_char result[SHA_DIGEST_LENGTH])
|
||||||
{
|
{
|
||||||
SHA_CTX h;
|
SHA_CTX h;
|
||||||
|
@ -297,6 +306,10 @@ bool SHA1Val::DoUnserialize(UnserialInfo* info)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SHA256Val::SHA256Val() : HashVal(sha256_type)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void SHA256Val::digest(val_list& vlist, u_char result[SHA256_DIGEST_LENGTH])
|
void SHA256Val::digest(val_list& vlist, u_char result[SHA256_DIGEST_LENGTH])
|
||||||
{
|
{
|
||||||
SHA256_CTX h;
|
SHA256_CTX h;
|
||||||
|
@ -410,6 +423,9 @@ bool SHA256Val::DoUnserialize(UnserialInfo* info)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EntropyVal::EntropyVal() : OpaqueVal(entropy_type)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
bool EntropyVal::Feed(const void* data, size_t size)
|
bool EntropyVal::Feed(const void* data, size_t size)
|
||||||
{
|
{
|
||||||
|
|
|
@ -36,7 +36,7 @@ public:
|
||||||
u_char key[MD5_DIGEST_LENGTH],
|
u_char key[MD5_DIGEST_LENGTH],
|
||||||
u_char result[MD5_DIGEST_LENGTH]);
|
u_char result[MD5_DIGEST_LENGTH]);
|
||||||
|
|
||||||
MD5Val() : HashVal(new OpaqueType("md5")) { }
|
MD5Val();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class Val;
|
friend class Val;
|
||||||
|
@ -55,7 +55,7 @@ class SHA1Val : public HashVal {
|
||||||
public:
|
public:
|
||||||
static void digest(val_list& vlist, u_char result[SHA_DIGEST_LENGTH]);
|
static void digest(val_list& vlist, u_char result[SHA_DIGEST_LENGTH]);
|
||||||
|
|
||||||
SHA1Val() : HashVal(new OpaqueType("sha1")) { }
|
SHA1Val();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class Val;
|
friend class Val;
|
||||||
|
@ -74,7 +74,7 @@ class SHA256Val : public HashVal {
|
||||||
public:
|
public:
|
||||||
static void digest(val_list& vlist, u_char result[SHA256_DIGEST_LENGTH]);
|
static void digest(val_list& vlist, u_char result[SHA256_DIGEST_LENGTH]);
|
||||||
|
|
||||||
SHA256Val() : HashVal(new OpaqueType("sha256")) { }
|
SHA256Val();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class Val;
|
friend class Val;
|
||||||
|
@ -91,7 +91,7 @@ private:
|
||||||
|
|
||||||
class EntropyVal : public OpaqueVal {
|
class EntropyVal : public OpaqueVal {
|
||||||
public:
|
public:
|
||||||
EntropyVal() : OpaqueVal(new OpaqueType("entropy")) { }
|
EntropyVal();
|
||||||
|
|
||||||
bool Feed(const void* data, size_t size);
|
bool Feed(const void* data, size_t size);
|
||||||
bool Get(double *r_ent, double *r_chisq, double *r_mean,
|
bool Get(double *r_ent, double *r_chisq, double *r_mean,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue