[Bro] &expire_func/&create_expire question

Christian Kreibich christian at whoop.org
Thu Nov 16 15:50:50 PST 2006


can the &expire_func and &create_expire attributes be assigned at
run-time? Mike (cc'd) sent me code for a sliding window implementation,
which contained this:

function sw_new( window : interval ) : sliding_window {
    local w : sliding_window;
    local tbl : table[time] of __sliding_window_slot
	&create_expire=window &expire_func=__sw_expire_slot;

The parser accepts this without complaint but the code caused a
segmentation fault ...

Program received signal SIGSEGV, Segmentation fault.
0x0812c31a in Val::AsInterval (this=0x0) at Val.h:247
247             CONST_ACCESSOR(TYPE_INTERVAL, double, double_val, AsInterval)
(gdb) bt
#0  0x0812c31a in Val::AsInterval (this=0x0) at Val.h:247
#1  0x0820a890 in TableVal::CheckExpireAttr (this=0x84148e8, at=ATTR_EXPIRE_CREATE) at Val.cc:1746
#2  0x0820a964 in TableVal::SetAttrs (this=0x84148e8, a=0x8302318) at Val.cc:1733
#3  0x082166d1 in TableVal (this=0x84148e8, t=0x83039f0, a=0x8302318) at Val.cc:1680
#4  0x081d7c94 in InitStmt::Exec (this=0x8304870, f=0x8413170, flow=@0xbf93ad2c) at Stmt.cc:1608
#5  0x081d7edd in StmtList::Exec (this=0x83047c8, f=0x8413170, flow=@0xbf93ad2c) at Stmt.cc:1390
#6  0x081460d8 in BroFunc::Call (this=0x8304750, args=0x84147a0, parent=0x84131a8) at Func.cc:313

... that went away by making the window size fixed:

type slots_table: table[time] of __sliding_window_slot
	&create_expire=SLIDING_WINDOW &expire_func=__sw_expire_slot;	

function sw_new() : sliding_window {
    local w : sliding_window;
    local tbl : slots_table;


More information about the Bro mailing list