mirror of
https://github.com/zeek/zeek.git
synced 2025-10-11 02:58:20 +00:00
Merge remote-tracking branch 'origin/topic/jsiwek/interpreter-exception-fix'
* origin/topic/jsiwek/interpreter-exception-fix: Fix exceptions thrown in event handlers preventing others from running.
This commit is contained in:
commit
0ca0119f2a
6 changed files with 70 additions and 13 deletions
13
CHANGES
13
CHANGES
|
@ -1,4 +1,17 @@
|
||||||
|
|
||||||
|
2.0-709 | 2012-06-21 10:14:24 -0700
|
||||||
|
|
||||||
|
* Fix exceptions thrown in event handlers preventing others from running. (Jon Siwek)
|
||||||
|
|
||||||
|
* Add another SOCKS command. (Seth Hall)
|
||||||
|
|
||||||
|
* Fixed some problems with the SOCKS analyzer and tests. (Seth Hall)
|
||||||
|
|
||||||
|
* Updating NEWS in preparation for beta. (Robin Sommer)
|
||||||
|
|
||||||
|
* Accepting different AF_INET6 values for loopback link headers.
|
||||||
|
(Robin Sommer)
|
||||||
|
|
||||||
2.0-698 | 2012-06-20 14:30:40 -0700
|
2.0-698 | 2012-06-20 14:30:40 -0700
|
||||||
|
|
||||||
* Updates for the SOCKS analyzer (Seth Hall).
|
* Updates for the SOCKS analyzer (Seth Hall).
|
||||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
||||||
2.0-698
|
2.0-709
|
||||||
|
|
12
src/Func.cc
12
src/Func.cc
|
@ -329,7 +329,17 @@ Val* BroFunc::Call(val_list* args, Frame* parent) const
|
||||||
bodies[i].stmts->GetLocationInfo());
|
bodies[i].stmts->GetLocationInfo());
|
||||||
|
|
||||||
Unref(result);
|
Unref(result);
|
||||||
result = bodies[i].stmts->Exec(f, flow);
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
result = bodies[i].stmts->Exec(f, flow);
|
||||||
|
}
|
||||||
|
|
||||||
|
catch ( InterpreterException& e )
|
||||||
|
{
|
||||||
|
// Already reported, but we continue exec'ing remaining bodies.
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ( f->HasDelayed() )
|
if ( f->HasDelayed() )
|
||||||
{
|
{
|
||||||
|
|
18
testing/btest/Baseline/core.expr-exception/output
Normal file
18
testing/btest/Baseline/core.expr-exception/output
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
ftp field missing
|
||||||
|
[orig_h=141.142.220.118, orig_p=48649/tcp, resp_h=208.80.152.118, resp_p=80/tcp]
|
||||||
|
ftp field missing
|
||||||
|
[orig_h=141.142.220.118, orig_p=49997/tcp, resp_h=208.80.152.3, resp_p=80/tcp]
|
||||||
|
ftp field missing
|
||||||
|
[orig_h=141.142.220.118, orig_p=49996/tcp, resp_h=208.80.152.3, resp_p=80/tcp]
|
||||||
|
ftp field missing
|
||||||
|
[orig_h=141.142.220.118, orig_p=49998/tcp, resp_h=208.80.152.3, resp_p=80/tcp]
|
||||||
|
ftp field missing
|
||||||
|
[orig_h=141.142.220.118, orig_p=50000/tcp, resp_h=208.80.152.3, resp_p=80/tcp]
|
||||||
|
ftp field missing
|
||||||
|
[orig_h=141.142.220.118, orig_p=49999/tcp, resp_h=208.80.152.3, resp_p=80/tcp]
|
||||||
|
ftp field missing
|
||||||
|
[orig_h=141.142.220.118, orig_p=50001/tcp, resp_h=208.80.152.3, resp_p=80/tcp]
|
||||||
|
ftp field missing
|
||||||
|
[orig_h=141.142.220.118, orig_p=35642/tcp, resp_h=208.80.152.2, resp_p=80/tcp]
|
||||||
|
ftp field missing
|
||||||
|
[orig_h=141.142.220.235, orig_p=6705/tcp, resp_h=173.192.163.128, resp_p=80/tcp]
|
|
@ -5,12 +5,12 @@
|
||||||
#path reporter
|
#path reporter
|
||||||
#fields ts level message location
|
#fields ts level message location
|
||||||
#types time enum string string
|
#types time enum string string
|
||||||
1300475168.783842 Reporter::ERROR field value missing [c$ftp] /Users/robin/bro/master/testing/btest/.tmp/core.expr-exception/expr-exception.bro, line 8
|
1300475168.783842 Reporter::ERROR field value missing [c$ftp] /home/jsiwek/bro/testing/btest/.tmp/core.expr-exception/expr-exception.bro, line 10
|
||||||
1300475168.915940 Reporter::ERROR field value missing [c$ftp] /Users/robin/bro/master/testing/btest/.tmp/core.expr-exception/expr-exception.bro, line 8
|
1300475168.915940 Reporter::ERROR field value missing [c$ftp] /home/jsiwek/bro/testing/btest/.tmp/core.expr-exception/expr-exception.bro, line 10
|
||||||
1300475168.916118 Reporter::ERROR field value missing [c$ftp] /Users/robin/bro/master/testing/btest/.tmp/core.expr-exception/expr-exception.bro, line 8
|
1300475168.916118 Reporter::ERROR field value missing [c$ftp] /home/jsiwek/bro/testing/btest/.tmp/core.expr-exception/expr-exception.bro, line 10
|
||||||
1300475168.918295 Reporter::ERROR field value missing [c$ftp] /Users/robin/bro/master/testing/btest/.tmp/core.expr-exception/expr-exception.bro, line 8
|
1300475168.918295 Reporter::ERROR field value missing [c$ftp] /home/jsiwek/bro/testing/btest/.tmp/core.expr-exception/expr-exception.bro, line 10
|
||||||
1300475168.952193 Reporter::ERROR field value missing [c$ftp] /Users/robin/bro/master/testing/btest/.tmp/core.expr-exception/expr-exception.bro, line 8
|
1300475168.952193 Reporter::ERROR field value missing [c$ftp] /home/jsiwek/bro/testing/btest/.tmp/core.expr-exception/expr-exception.bro, line 10
|
||||||
1300475168.952228 Reporter::ERROR field value missing [c$ftp] /Users/robin/bro/master/testing/btest/.tmp/core.expr-exception/expr-exception.bro, line 8
|
1300475168.952228 Reporter::ERROR field value missing [c$ftp] /home/jsiwek/bro/testing/btest/.tmp/core.expr-exception/expr-exception.bro, line 10
|
||||||
1300475168.954761 Reporter::ERROR field value missing [c$ftp] /Users/robin/bro/master/testing/btest/.tmp/core.expr-exception/expr-exception.bro, line 8
|
1300475168.954761 Reporter::ERROR field value missing [c$ftp] /home/jsiwek/bro/testing/btest/.tmp/core.expr-exception/expr-exception.bro, line 10
|
||||||
1300475168.962628 Reporter::ERROR field value missing [c$ftp] /Users/robin/bro/master/testing/btest/.tmp/core.expr-exception/expr-exception.bro, line 8
|
1300475168.962628 Reporter::ERROR field value missing [c$ftp] /home/jsiwek/bro/testing/btest/.tmp/core.expr-exception/expr-exception.bro, line 10
|
||||||
1300475169.780331 Reporter::ERROR field value missing [c$ftp] /Users/robin/bro/master/testing/btest/.tmp/core.expr-exception/expr-exception.bro, line 8
|
1300475169.780331 Reporter::ERROR field value missing [c$ftp] /home/jsiwek/bro/testing/btest/.tmp/core.expr-exception/expr-exception.bro, line 10
|
||||||
|
|
|
@ -1,9 +1,25 @@
|
||||||
# Bro shouldn't crash when doing nothing, nor outputting anything.
|
# Expressions in an event handler that raise interpreter exceptions
|
||||||
|
# shouldn't abort Bro entirely, but just return from the function body.
|
||||||
#
|
#
|
||||||
# @TEST-EXEC: cat /dev/null | bro -r $TRACES/wikipedia.trace %INPUT
|
# @TEST-EXEC: bro -r $TRACES/wikipedia.trace %INPUT >output
|
||||||
# @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff reporter.log
|
# @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff reporter.log
|
||||||
|
# @TEST-EXEC: btest-diff output
|
||||||
|
|
||||||
event connection_established(c: connection)
|
event connection_established(c: connection)
|
||||||
{
|
{
|
||||||
print c$ftp;
|
print c$ftp;
|
||||||
|
print "not reached";
|
||||||
|
}
|
||||||
|
|
||||||
|
event connection_established(c: connection)
|
||||||
|
{
|
||||||
|
if ( c?$ftp )
|
||||||
|
print c$ftp;
|
||||||
|
else
|
||||||
|
print "ftp field missing";
|
||||||
|
}
|
||||||
|
|
||||||
|
event connection_established(c: connection)
|
||||||
|
{
|
||||||
|
print c$id;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue