From 84a56e353ee5eadc0ceb637fd922587710bb1f2d Mon Sep 17 00:00:00 2001 From: Vern Paxson Date: Sat, 27 Feb 2021 10:29:32 -0800 Subject: [PATCH] fix other instances of GetField().get() assuming long-lived ValPtr's --- src/file_analysis/File.cc | 8 ++++---- src/option.bif | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/file_analysis/File.cc b/src/file_analysis/File.cc index 16b5ac1e9f..a879a16aa4 100644 --- a/src/file_analysis/File.cc +++ b/src/file_analysis/File.cc @@ -128,12 +128,12 @@ bool File::UpdateConnectionFields(Connection* conn, bool is_orig) if ( ! conn ) return false; - Val* conns = val->GetField(conns_idx).get(); + auto conns = val->GetField(conns_idx); if ( ! conns ) { auto ect = empty_connection_table(); - conns = ect.get(); + conns = ect; val->Assign(conns_idx, std::move(ect)); } @@ -309,7 +309,7 @@ void File::InferMetadata() { did_metadata_inference = true; - Val* bof_buffer_val = val->GetField(bof_buffer_idx).get(); + auto bof_buffer_val = val->GetField(bof_buffer_idx); if ( ! bof_buffer_val ) { @@ -318,7 +318,7 @@ void File::InferMetadata() String* bs = concatenate(bof_buffer.chunks); val->Assign(bof_buffer_idx, bs); - bof_buffer_val = val->GetField(bof_buffer_idx).get(); + bof_buffer_val = val->GetField(bof_buffer_idx); } if ( ! FileEventAvailable(file_sniff) ) diff --git a/src/option.bif b/src/option.bif index 496baae0cc..fca30b3bdf 100644 --- a/src/option.bif +++ b/src/option.bif @@ -80,7 +80,8 @@ function Option::set%(ID: string, val: any, location: string &default=""%): bool if ( same_type(val->GetType(), zeek::Broker::detail::DataVal::ScriptDataType()) ) { - auto dv = static_cast(val->AsRecordVal()->GetField(0).get()); + auto valptr = val->AsRecordVal()->GetField(0); + auto dv = static_cast(valptr.get()); auto val_from_data = dv->castTo(i->GetType().get()); if ( ! val_from_data )