diff --git a/src/Conn.cc b/src/Conn.cc index f777a12f57..bab032cbd0 100644 --- a/src/Conn.cc +++ b/src/Conn.cc @@ -348,19 +348,18 @@ RecordVal* Connection::BuildConnVal() id_val->Assign(2, new AddrVal(resp_addr)); id_val->Assign(3, new PortVal(ntohs(resp_port), prot_type)); - conn_val->Assign(0, id_val); - RecordVal *orig_endp = new RecordVal(endpoint); orig_endp->Assign(0, new Val(0, TYPE_COUNT)); orig_endp->Assign(1, new Val(0, TYPE_COUNT)); - conn_val->Assign(1, orig_endp); RecordVal *resp_endp = new RecordVal(endpoint); resp_endp->Assign(0, new Val(0, TYPE_COUNT)); resp_endp->Assign(1, new Val(0, TYPE_COUNT)); - conn_val->Assign(2, resp_endp); - // conn_val->Assign(3, new Val(start_time, TYPE_TIME)); // ### + conn_val->Assign(0, id_val); + conn_val->Assign(1, orig_endp); + conn_val->Assign(2, resp_endp); + // 3 and 4 are set below. conn_val->Assign(5, new TableVal(string_set)); // service conn_val->Assign(6, new StringVal("")); // addl conn_val->Assign(7, new Val(0, TYPE_COUNT)); // hot diff --git a/src/Expr.cc b/src/Expr.cc index d748808041..c142026123 100644 --- a/src/Expr.cc +++ b/src/Expr.cc @@ -3469,6 +3469,7 @@ Val* SetConstructorExpr::Eval(Frame* f) const { Val* element = exprs[i]->Eval(f); aggr->Assign(element, 0); + Unref(element); } return aggr; diff --git a/src/LogMgr.cc b/src/LogMgr.cc index 76be1f7241..bfd12fa98f 100644 --- a/src/LogMgr.cc +++ b/src/LogMgr.cc @@ -385,6 +385,8 @@ LogMgr::Filter::~Filter() for ( int i = 0; i < num_fields; ++i ) delete fields[i]; + free(fields); + Unref(path_val); } diff --git a/src/util.cc b/src/util.cc index 9697285270..7c32365008 100644 --- a/src/util.cc +++ b/src/util.cc @@ -364,7 +364,7 @@ char* uitoa_n(uint64 value, char* str, int n, int base, const char* prefix) i += strlen(prefix); } - if ( i >= n ) + if ( i >= n - 1 ) return str; v = value; diff --git a/testing/btest/core/leaks.bro b/testing/btest/core/leaks.bro new file mode 100644 index 0000000000..04ef8d8ef2 --- /dev/null +++ b/testing/btest/core/leaks.bro @@ -0,0 +1,5 @@ +# Needs perftools support. +# +# @TEST-REQUIRES: bro --help 2>&1 | grep -q mem-leaks +# +# @TEST-EXEC: HEAP_CHECK_DUMP_DIRECTORY=. HEAPCHECK=local bro -m -r $TRACES/wikipedia.trace test-all