diff --git a/CHANGES b/CHANGES index f9151efd79..d0dc72b80e 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,10 @@ +2.1-1039 | 2013-08-09 15:30:15 -0700 + + * Fix mem leak in DHCP analyzer. (Jon Siwek) + + * Fix a unit test outdated by recent sumstats changes. (Jon Siwek) + 2.1-1036 | 2013-08-05 17:29:11 -0400 * Fix the SSL infinite loop I just created. (Seth Hall) diff --git a/VERSION b/VERSION index 1843674cb9..a2a3606e0f 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.1-1036 +2.1-1039 diff --git a/src/analyzer/protocol/dhcp/dhcp-analyzer.pac b/src/analyzer/protocol/dhcp/dhcp-analyzer.pac index f58a2d9b5e..621c86cfb8 100644 --- a/src/analyzer/protocol/dhcp/dhcp-analyzer.pac +++ b/src/analyzer/protocol/dhcp/dhcp-analyzer.pac @@ -219,15 +219,19 @@ flow DHCP_Flow(is_orig: bool) { } Unref(dhcp_msg_val_); - RecordVal* r = new RecordVal(dhcp_msg); + const char* mac_str = fmt_mac(${msg.chaddr}.data(), ${msg.chaddr}.length()); + + RecordVal* r = new RecordVal(dhcp_msg); r->Assign(0, new Val(${msg.op}, TYPE_COUNT)); r->Assign(1, new Val(${msg.type}, TYPE_COUNT)); r->Assign(2, new Val(${msg.xid}, TYPE_COUNT)); - r->Assign(3, new StringVal(fmt_mac(${msg.chaddr}.data(), ${msg.chaddr}.length()))); + r->Assign(3, new StringVal(mac_str)); r->Assign(4, new AddrVal(${msg.ciaddr})); r->Assign(5, new AddrVal(${msg.yiaddr})); + delete [] mac_str; + dhcp_msg_val_ = r; switch ( ${msg.op} ) diff --git a/testing/btest/core/leaks/basic-cluster.bro b/testing/btest/core/leaks/basic-cluster.bro index d25af55b3f..2c13c2315c 100644 --- a/testing/btest/core/leaks/basic-cluster.bro +++ b/testing/btest/core/leaks/basic-cluster.bro @@ -26,16 +26,16 @@ global n = 0; event bro_init() &priority=5 { local r1: SumStats::Reducer = [$stream="test", $apply=set(SumStats::SUM, SumStats::MIN, SumStats::MAX, SumStats::AVERAGE, SumStats::STD_DEV, SumStats::VARIANCE, SumStats::UNIQUE)]; - SumStats::create([$epoch=5secs, + SumStats::create([$name="test", + $epoch=5secs, $reducers=set(r1), - $epoch_finished(rt: SumStats::ResultTable) = + $epoch_result(ts: time, key: SumStats::Key, result: SumStats::Result) = + { + local r = result["test"]; + print fmt("Host: %s - num:%d - sum:%.1f - avg:%.1f - max:%.1f - min:%.1f - var:%.1f - std_dev:%.1f - unique:%d", key$host, r$num, r$sum, r$average, r$max, r$min, r$variance, r$std_dev, r$unique); + }, + $epoch_finished(ts: time) = { - for ( key in rt ) - { - local r = rt[key]["test"]; - print fmt("Host: %s - num:%d - sum:%.1f - avg:%.1f - max:%.1f - min:%.1f - var:%.1f - std_dev:%.1f - unique:%d", key$host, r$num, r$sum, r$average, r$max, r$min, r$variance, r$std_dev, r$unique); - } - terminate(); }]); }