diff --git a/CHANGES b/CHANGES index a0abba26a9..f1747aa825 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,8 @@ +2.6-beta2-80 | 2018-11-07 11:46:34 -0600 + + * Support appending to vector of any (Jon Siwek, Corelight) + 2.6-beta2-79 | 2018-11-07 10:27:00 -0600 * Fix coding conventions nits/typos (Vern Paxson, Corelight) diff --git a/VERSION b/VERSION index 48e96e7c51..5d586fae4e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.6-beta2-79 +2.6-beta2-80 diff --git a/src/Expr.cc b/src/Expr.cc index 3c9be75bf9..84db97b2d6 100644 --- a/src/Expr.cc +++ b/src/Expr.cc @@ -1485,8 +1485,9 @@ AddToExpr::AddToExpr(Expr* arg_op1, Expr* arg_op2) ExprError("appending non-arithmetic to arithmetic vector"); } - else if ( bt1 != bt2 ) - ExprError("incompatible vector append"); + else if ( bt1 != bt2 && bt1 != TYPE_ANY ) + ExprError(fmt("incompatible vector append: %s and %s", + type_name(bt1), type_name(bt2))); else SetType(op1->Type()->Ref()); diff --git a/testing/btest/Baseline/language.vector-any-append/out b/testing/btest/Baseline/language.vector-any-append/out new file mode 100644 index 0000000000..3571ae1207 --- /dev/null +++ b/testing/btest/Baseline/language.vector-any-append/out @@ -0,0 +1 @@ +[0, 1, 2, 3] diff --git a/testing/btest/language/vector-any-append.bro b/testing/btest/language/vector-any-append.bro new file mode 100644 index 0000000000..816627fbf1 --- /dev/null +++ b/testing/btest/language/vector-any-append.bro @@ -0,0 +1,22 @@ +# @TEST-EXEC: bro -b %INPUT >out +# @TEST-EXEC: btest-diff out + +function assign(v: vector of any) + { + v[|v|] = |v|; + } + +function append(v: vector of any) + { + v += |v|; + } + +event bro_init() + { + local v: vector of count; + assign(v); + assign(v); + append(v); + append(v); + print v; + }