Merge remote-tracking branch 'origin/topic/vern/add-del-void-exprs'

* origin/topic/vern/add-del-void-exprs:
  crash fixes for constructs that expect add/delete expressions to return values
This commit is contained in:
Evan Typanski 2025-07-11 12:58:06 -04:00
commit a739d47835
6 changed files with 27 additions and 6 deletions

View file

@ -1,3 +1,7 @@
8.0.0-dev.639 | 2025-07-11 12:58:06 -0400
* crash fixes for constructs that expect add/delete expressions to return values (Vern Paxson, Corelight)
8.0.0-dev.636 | 2025-07-10 15:42:52 -0700 8.0.0-dev.636 | 2025-07-10 15:42:52 -0700
* Reduce some false-positive warnings from GCC to warnings with -Werror (Tim Wojtulewicz, Corelight) * Reduce some false-positive warnings from GCC to warnings with -Werror (Tim Wojtulewicz, Corelight)

View file

@ -1 +1 @@
8.0.0-dev.636 8.0.0-dev.639

View file

@ -220,9 +220,9 @@ bool Expr::CanAdd() const { return false; }
bool Expr::CanDel() const { return false; } bool Expr::CanDel() const { return false; }
TypePtr Expr::AddType() const { return nullptr; } TypePtr Expr::AddType() const { return base_type(TYPE_VOID); }
TypePtr Expr::DelType() const { return nullptr; } TypePtr Expr::DelType() const { return base_type(TYPE_VOID); }
ValPtr Expr::Add(Frame* /* f */) { Internal("Expr::Add called"); } ValPtr Expr::Add(Frame* /* f */) { Internal("Expr::Add called"); }

View file

@ -730,9 +730,10 @@ ExprPtr AddExpr::BuildSub(const ExprPtr& op1, const ExprPtr& op2) {
} }
ExprPtr AggrAddDelExpr::Reduce(Reducer* c, StmtPtr& red_stmt) { ExprPtr AggrAddDelExpr::Reduce(Reducer* c, StmtPtr& red_stmt) {
if ( type ) // In the future, if we use add/delete for list operations or such,
return UnaryExpr::Reduce(c, red_stmt); // then the following becomes germane.
// if ( type )
// return UnaryExpr::Reduce(c, red_stmt);
if ( c->Optimizing() ) if ( c->Optimizing() )
op = c->UpdateExpr(op); op = c->UpdateExpr(op);

View file

@ -0,0 +1,3 @@
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
error in <...>/add-del-expr-void.zeek, line 10: can't assign void value (my_any1 = add my_set[3])
error in <...>/add-del-expr-void.zeek, line 11: can't assign void value (my_any2 = delete my_set[5])

View file

@ -0,0 +1,13 @@
# @TEST-DOC: checks for type-checking for add/delete expressions
#
# @TEST-EXEC-FAIL: zeek -b %INPUT >out 2>&1
# @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff out
global my_set: set[count];
event zeek_init()
{
local my_any1: any = add my_set[3];
local my_any2: any = delete my_set[5];
print my_any1, my_any2;
}