diff --git a/CHANGES b/CHANGES index d5197244ac..2ce0701a2a 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,8 @@ +2.6-68 | 2019-01-14 14:18:46 -0600 + + * GH-162: fix segfault when &expire_func is missing a return value (Jon Siwek, Corelight) + 2.6-67 | 2019-01-14 14:01:00 -0600 * GH-161: fix segfault in &default type checking for sets (Jon Siwek, Corelight) diff --git a/VERSION b/VERSION index 4ed4e6d848..b6380ae0c1 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.6-67 +2.6-68 diff --git a/src/Val.cc b/src/Val.cc index 13abb22507..b0669704fe 100644 --- a/src/Val.cc +++ b/src/Val.cc @@ -2466,7 +2466,7 @@ double TableVal::CallExpireFunc(Val* idx) vl->append(idx); - double secs; + double secs = 0; try { @@ -2488,16 +2488,19 @@ double TableVal::CallExpireFunc(Val* idx) } Val* vs = vf->AsFunc()->Call(vl); - secs = vs->AsInterval(); + + if ( vs ) + { + secs = vs->AsInterval(); + Unref(vs); + } Unref(vf); - Unref(vs); delete vl; } catch ( InterpreterException& e ) { - secs = 0; } return secs;