mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
Merge remote-tracking branch 'origin/topic/vern/zam-vector-loop-leak'
* origin/topic/vern/zam-vector-loop-leak: fixed ZAM memory leak when looping over vectors of records
This commit is contained in:
commit
bc75b1811d
6 changed files with 56 additions and 1 deletions
4
CHANGES
4
CHANGES
|
@ -1,3 +1,7 @@
|
||||||
|
7.1.0-dev.473 | 2024-11-08 15:31:39 +0100
|
||||||
|
|
||||||
|
* fixed ZAM memory leak when looping over vectors of records (Vern Paxson, Corelight)
|
||||||
|
|
||||||
7.1.0-dev.471 | 2024-11-08 15:22:48 +0100
|
7.1.0-dev.471 | 2024-11-08 15:22:48 +0100
|
||||||
|
|
||||||
* fixed access to uninitialized memory in ZAM's "cat" built-in (Vern Paxson, Corelight)
|
* fixed access to uninitialized memory in ZAM's "cat" built-in (Vern Paxson, Corelight)
|
||||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
||||||
7.1.0-dev.471
|
7.1.0-dev.473
|
||||||
|
|
|
@ -77,7 +77,10 @@ op-types U X I I
|
||||||
eval NextVectorIterCore($2, $3)
|
eval NextVectorIterCore($2, $3)
|
||||||
$$ = $2.iter;
|
$$ = $2.iter;
|
||||||
if ( Z_IS_MANAGED )
|
if ( Z_IS_MANAGED )
|
||||||
|
{
|
||||||
|
ZVal::DeleteManagedType($1);
|
||||||
$1 = BuildVal(vv[$2.iter]->ToVal(Z_TYPE), Z_TYPE);
|
$1 = BuildVal(vv[$2.iter]->ToVal(Z_TYPE), Z_TYPE);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
$1 = *vv[$2.iter];
|
$1 = *vv[$2.iter];
|
||||||
$2.IterFinished();
|
$2.IterFinished();
|
||||||
|
@ -87,7 +90,10 @@ internal-op Next-Vector-Blank-Iter-Val-Var
|
||||||
class Vsb
|
class Vsb
|
||||||
eval NextVectorIterCore($1, $2)
|
eval NextVectorIterCore($1, $2)
|
||||||
if ( Z_IS_MANAGED )
|
if ( Z_IS_MANAGED )
|
||||||
|
{
|
||||||
|
ZVal::DeleteManagedType($$);
|
||||||
$$ = BuildVal(vv[$1.iter]->ToVal(Z_TYPE), Z_TYPE);
|
$$ = BuildVal(vv[$1.iter]->ToVal(Z_TYPE), Z_TYPE);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
$$ = *vv[$1.iter];
|
$$ = *vv[$1.iter];
|
||||||
$1.IterFinished();
|
$1.IterFinished();
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
0, [a=123]
|
||||||
|
1, [a=456]
|
||||||
|
[a=123]
|
||||||
|
[a=456]
|
||||||
|
0, [1]
|
||||||
|
1, [2]
|
||||||
|
[1]
|
||||||
|
[2]
|
9
testing/btest/Baseline/opt.vector-loop-managed/output
Normal file
9
testing/btest/Baseline/opt.vector-loop-managed/output
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
0, [a=123]
|
||||||
|
1, [a=456]
|
||||||
|
[a=123]
|
||||||
|
[a=456]
|
||||||
|
0, [1]
|
||||||
|
1, [2]
|
||||||
|
[1]
|
||||||
|
[2]
|
27
testing/btest/opt/vector-loop-managed.zeek
Normal file
27
testing/btest/opt/vector-loop-managed.zeek
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
# @TEST-DOC: Regression test for memory leak when iterating over records of managed types.
|
||||||
|
# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1"
|
||||||
|
#
|
||||||
|
# @TEST-EXEC: zeek -b -O ZAM %INPUT >output
|
||||||
|
# @TEST-EXEC: btest-diff output
|
||||||
|
|
||||||
|
type X: record {
|
||||||
|
a: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
event zeek_init()
|
||||||
|
{
|
||||||
|
local vec1 = vector(X($a="123"), X($a="456"));
|
||||||
|
local vec2 = vector(vector(1), vector(2));
|
||||||
|
|
||||||
|
for ( i, r in vec1 )
|
||||||
|
print i, r;
|
||||||
|
|
||||||
|
for ( _, r in vec1 )
|
||||||
|
print r;
|
||||||
|
|
||||||
|
for ( j, v in vec2 )
|
||||||
|
print j, v;
|
||||||
|
|
||||||
|
for ( _, v in vec2 )
|
||||||
|
print v;
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue