mirror of
https://github.com/zeek/zeek.git
synced 2025-10-06 00:28:21 +00:00
Fix potential segfaults in VectorVal Insert/Remove methods
The existence/hole check for managed types was needed to prevent accessing a nil-optional value.
This commit is contained in:
parent
819fc1aac0
commit
fd5cdbbe50
3 changed files with 22 additions and 2 deletions
10
src/Val.cc
10
src/Val.cc
|
@ -3390,7 +3390,10 @@ bool VectorVal::Insert(unsigned int index, ValPtr element)
|
|||
types_it = std::next(yield_types->begin(), index);
|
||||
}
|
||||
else if ( managed_yield )
|
||||
ZVal::DeleteManagedType(**it);
|
||||
{
|
||||
if ( *it )
|
||||
ZVal::DeleteManagedType(**it);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -3446,7 +3449,10 @@ bool VectorVal::Remove(unsigned int index)
|
|||
}
|
||||
|
||||
else if ( managed_yield )
|
||||
ZVal::DeleteManagedType(**it);
|
||||
{
|
||||
if ( *it )
|
||||
ZVal::DeleteManagedType(**it);
|
||||
}
|
||||
|
||||
vector_val->erase(it);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue