Fixes GH-1689

* 'master' of https://github.com/sowmyaramapatruni/zeek:
  Fix issue-1689
This commit is contained in:
Johanna Amann 2021-08-03 10:22:43 +01:00
commit ec6b954499
4 changed files with 10 additions and 3 deletions

View file

@ -1,3 +1,9 @@
4.2.0-dev.64 | 2021-08-03 10:23:41 +0100
* Under certain circumstances, Zeek processes could get into an infinite looping state inside RotationTimer.
This is fixed by handling special cases of rotation happening exactly on the time boundary, and fixing
a special case of timer expiration. Fixes GH-1689. (Sowmya Ramapatruni, Corelight)
4.2.0-dev.62 | 2021-08-03 10:21:18 +0100 4.2.0-dev.62 | 2021-08-03 10:21:18 +0100
* Fix some HTTP evasions. Now HTTP packets are correctly parsed, when CRLF is missing on a multipart * Fix some HTTP evasions. Now HTTP packets are correctly parsed, when CRLF is missing on a multipart

View file

@ -1 +1 @@
4.2.0-dev.62 4.2.0-dev.64

View file

@ -152,7 +152,7 @@ void PQ_TimerMgr::Expire()
int PQ_TimerMgr::DoAdvance(double new_t, int max_expire) int PQ_TimerMgr::DoAdvance(double new_t, int max_expire)
{ {
Timer* timer = Top(); Timer* timer = Top();
for ( num_expired = 0; (num_expired < max_expire || max_expire == 0) && for ( num_expired = 0; (num_expired < max_expire ) &&
timer && timer->Time() <= new_t; ++num_expired ) timer && timer->Time() <= new_t; ++num_expired )
{ {
last_timestamp = timer->Time(); last_timestamp = timer->Time();

View file

@ -885,9 +885,10 @@ double calc_next_rotate(double current, double interval, double base)
double startofday = mktime(&t); double startofday = mktime(&t);
// current < startofday + base + i * interval <= current + interval // current < startofday + base + i * interval <= current + interval
return startofday + base + double delta_t = startofday + base +
ceil((current - startofday - base) / interval) * interval - ceil((current - startofday - base) / interval) * interval -
current; current;
return delta_t > 0.0 ? delta_t: interval;
} }
void terminate_processing() void terminate_processing()