diff --git a/src/DNS.cc b/src/DNS.cc index ad1b4cb716..d13f184ca5 100644 --- a/src/DNS.cc +++ b/src/DNS.cc @@ -1028,7 +1028,7 @@ Contents_DNS::Contents_DNS(Connection* conn, bool orig, Contents_DNS::~Contents_DNS() { - delete msg_buf; + free(msg_buf); } void Contents_DNS::Flush() diff --git a/src/LogMgr.cc b/src/LogMgr.cc index bfd12fa98f..b194d0da2a 100644 --- a/src/LogMgr.cc +++ b/src/LogMgr.cc @@ -1039,6 +1039,11 @@ LogVal* LogMgr::ValToLogVal(Val* val, BroType* ty) case TYPE_TABLE: { ListVal* set = val->AsTableVal()->ConvertToPureList(); + if ( ! set ) + // ConvertToPureList has reported an internal warning + // already. Just keep going by making something up. + set = new ListVal(TYPE_INT); + lval->val.set_val.size = set->Length(); lval->val.set_val.vals = new LogVal* [lval->val.set_val.size]; diff --git a/src/Val.cc b/src/Val.cc index 0172657366..fe174b1544 100644 --- a/src/Val.cc +++ b/src/Val.cc @@ -2284,7 +2284,10 @@ ListVal* TableVal::ConvertToPureList() const { type_list* tl = table_type->Indices()->Types(); if ( tl->length() != 1 ) + { InternalWarning("bad index type in TableVal::ConvertToPureList"); + return 0; + } return ConvertToList((*tl)[0]->Tag()); } diff --git a/src/bro.bif b/src/bro.bif index d77d6b53f7..6472e4b259 100644 --- a/src/bro.bif +++ b/src/bro.bif @@ -1827,7 +1827,9 @@ BroString* convert_index_to_string(Val* index) { ODesc d; index->Describe(&d); - return new BroString(1, d.TakeBytes(), d.Len()); + BroString* s = new BroString(1, d.TakeBytes(), d.Len()); + s->SetUseFreeToDelete(1); + return s; } %%} diff --git a/src/util.cc b/src/util.cc index fe4c943c23..31895874c9 100644 --- a/src/util.cc +++ b/src/util.cc @@ -1133,6 +1133,7 @@ uint64 calculate_unique_id() int rnd; } unique; + memset(&unique, 0, sizeof(unique)); // Make valgrind happy. gethostname(unique.hostname, 128); unique.hostname[sizeof(unique.hostname)-1] = '\0'; gettimeofday(&unique.time, 0);