mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
fixes for now-incorrect assumption that GetField always returns an existing ValPtr
This commit is contained in:
parent
3a59bc1a37
commit
2f47cce8a6
3 changed files with 10 additions and 8 deletions
|
@ -184,7 +184,7 @@ char* CompositeHash::SingleValHash(bool type_check, char* kp0,
|
||||||
|
|
||||||
for ( int i = 0; i < num_fields; ++i )
|
for ( int i = 0; i < num_fields; ++i )
|
||||||
{
|
{
|
||||||
auto rv_i = rv->GetField(i).get();
|
auto rv_i = rv->GetField(i);
|
||||||
|
|
||||||
Attributes* a = rt->FieldDecl(i)->attrs.get();
|
Attributes* a = rt->FieldDecl(i)->attrs.get();
|
||||||
bool optional = (a && a->Find(ATTR_OPTIONAL));
|
bool optional = (a && a->Find(ATTR_OPTIONAL));
|
||||||
|
@ -194,7 +194,7 @@ char* CompositeHash::SingleValHash(bool type_check, char* kp0,
|
||||||
|
|
||||||
if ( ! (kp = SingleValHash(type_check, kp,
|
if ( ! (kp = SingleValHash(type_check, kp,
|
||||||
rt->GetFieldType(i).get(),
|
rt->GetFieldType(i).get(),
|
||||||
rv_i, optional)) )
|
rv_i.get(), optional)) )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -517,8 +517,9 @@ int CompositeHash::SingleTypeKeySize(Type* bt, const Val* v,
|
||||||
Attributes* a = rt->FieldDecl(i)->attrs.get();
|
Attributes* a = rt->FieldDecl(i)->attrs.get();
|
||||||
bool optional = (a && a->Find(ATTR_OPTIONAL));
|
bool optional = (a && a->Find(ATTR_OPTIONAL));
|
||||||
|
|
||||||
|
auto rv_v = rv ? rv->GetField(i) : nullptr;
|
||||||
sz = SingleTypeKeySize(rt->GetFieldType(i).get(),
|
sz = SingleTypeKeySize(rt->GetFieldType(i).get(),
|
||||||
rv ? rv->GetField(i).get() : nullptr,
|
rv_v.get(),
|
||||||
type_check, sz, optional,
|
type_check, sz, optional,
|
||||||
calc_static_size);
|
calc_static_size);
|
||||||
if ( ! sz )
|
if ( ! sz )
|
||||||
|
|
|
@ -128,12 +128,12 @@ bool File::UpdateConnectionFields(Connection* conn, bool is_orig)
|
||||||
if ( ! conn )
|
if ( ! conn )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
Val* conns = val->GetField(conns_idx).get();
|
auto conns = val->GetField(conns_idx);
|
||||||
|
|
||||||
if ( ! conns )
|
if ( ! conns )
|
||||||
{
|
{
|
||||||
auto ect = empty_connection_table();
|
auto ect = empty_connection_table();
|
||||||
conns = ect.get();
|
conns = ect;
|
||||||
val->Assign(conns_idx, std::move(ect));
|
val->Assign(conns_idx, std::move(ect));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -309,7 +309,7 @@ void File::InferMetadata()
|
||||||
{
|
{
|
||||||
did_metadata_inference = true;
|
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 )
|
if ( ! bof_buffer_val )
|
||||||
{
|
{
|
||||||
|
@ -318,7 +318,7 @@ void File::InferMetadata()
|
||||||
|
|
||||||
String* bs = concatenate(bof_buffer.chunks);
|
String* bs = concatenate(bof_buffer.chunks);
|
||||||
val->Assign(bof_buffer_idx, bs);
|
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) )
|
if ( ! FileEventAvailable(file_sniff) )
|
||||||
|
|
|
@ -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()) )
|
if ( same_type(val->GetType(), zeek::Broker::detail::DataVal::ScriptDataType()) )
|
||||||
{
|
{
|
||||||
auto dv = static_cast<zeek::Broker::detail::DataVal*>(val->AsRecordVal()->GetField(0).get());
|
auto valptr = val->AsRecordVal()->GetField(0);
|
||||||
|
auto dv = static_cast<zeek::Broker::detail::DataVal*>(valptr.get());
|
||||||
auto val_from_data = dv->castTo(i->GetType().get());
|
auto val_from_data = dv->castTo(i->GetType().get());
|
||||||
|
|
||||||
if ( ! val_from_data )
|
if ( ! val_from_data )
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue