diff --git a/CHANGES b/CHANGES index 4555d6f735..0ea99b30b6 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,7 @@ +4.2.0-dev.292 | 2021-11-04 14:28:35 -0700 + + * Fix C++ set intersection code (Yacin Nadji, Corelight) + 4.2.0-dev.286 | 2021-11-03 09:36:41 -0700 * GH-693: use pcap_dump_open_append where supported (Tim Wojtulewicz, Corelight) diff --git a/VERSION b/VERSION index 0a5f1ce851..3eb22cfbea 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.2.0-dev.286 +4.2.0-dev.292 diff --git a/src/Val.cc b/src/Val.cc index 305a638d83..09beec75c5 100644 --- a/src/Val.cc +++ b/src/Val.cc @@ -1715,8 +1715,7 @@ TableValPtr TableVal::Intersection(const TableVal& tv) const t0 = tmp; } - const PDict* tbl = AsTable(); - for ( const auto& tble : *tbl ) + for ( const auto& tble : *t1 ) { auto k = tble.GetHashKey(); diff --git a/testing/btest/Baseline/language.set/out b/testing/btest/Baseline/language.set/out index 57bb3c068f..51d2a72711 100644 --- a/testing/btest/Baseline/language.set/out +++ b/testing/btest/Baseline/language.set/out @@ -44,7 +44,8 @@ remove element (PASS) remove element (PASS) !in operator (PASS) union (PASS) -intersection (FAIL) +intersection (PASS) +intersection (PASS) difference (PASS) difference (PASS) union/inter. (PASS) diff --git a/testing/btest/language/set.zeek b/testing/btest/language/set.zeek index 627474b2d3..b396a0c572 100644 --- a/testing/btest/language/set.zeek +++ b/testing/btest/language/set.zeek @@ -148,9 +148,11 @@ function basic_functionality() local a_or_b = a | b; local a_and_b = a & b; + local b_and_a = b & a; test_case( "union", a_or_b == a_plus_b ); - test_case( "intersection", a_and_b == a_plus_b ); + test_case( "intersection", a_and_b == a_also_b ); + test_case( "intersection", b_and_a == a_also_b ); test_case( "difference", a - b == a_sans_b ); test_case( "difference", b - a == b_sans_a );