From: Stephen Donnelly Date: Mon, 11 Dec 2023 02:32:06 +0000 (+1300) Subject: endace: Fix source-dag timestamps X-Git-Tag: suricata-8.0.0-beta1~1933 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=879db3dbc3e93912c784375c85d88404a9371f31;p=thirdparty%2Fsuricata.git endace: Fix source-dag timestamps Bug: #6618. Fix Endace ERF to SCTime_t timestamp conversion Fix typo preventing compilation with --enable-dag --- diff --git a/src/source-erf-dag.c b/src/source-erf-dag.c index e3c820dc4c..b7ea14d832 100644 --- a/src/source-erf-dag.c +++ b/src/source-erf-dag.c @@ -186,7 +186,7 @@ ReceiveErfDagThreadInit(ThreadVars *tv, void *initdata, void **data) SCReturnInt(TM_ECODE_FAILED); } - ErfDagThreadVars *ewtn = SCMClloc(1, sizeof(ErfDagThreadVars)); + ErfDagThreadVars *ewtn = SCCalloc(1, sizeof(ErfDagThreadVars)); if (unlikely(ewtn == NULL)) { FatalError("Failed to allocate memory for ERF DAG thread vars."); } @@ -506,17 +506,13 @@ ProcessErfDagRecord(ErfDagThreadVars *ewtn, char *prec) SCReturnInt(TM_ECODE_FAILED); } - /* Convert ERF time to timeval - from libpcap. */ + /* Convert ERF time to SCTime_t */ uint64_t ts = dr->ts; p->ts = SCTIME_FROM_SECS(ts >> 32); ts = (ts & 0xffffffffULL) * 1000000; ts += 0x80000000; /* rounding */ uint64_t usecs = ts >> 32; - if (usecs >= 1000000) { - usecs -= 1000000; - p->ts += SCTIME_FROM_SECS(1); - } - p->ts += SCTIME_FROM_USECS(usecs); + p->ts = SCTIME_ADD_USECS(p->ts, usecs); StatsIncr(ewtn->tv, ewtn->packets); ewtn->bytes += wlen; diff --git a/src/source-erf-file.c b/src/source-erf-file.c index 4803f8b3e2..f3102cebf3 100644 --- a/src/source-erf-file.c +++ b/src/source-erf-file.c @@ -195,17 +195,12 @@ static inline TmEcode ReadErfRecord(ThreadVars *tv, Packet *p, void *data) GET_PKT_LEN(p) = wlen; p->datalink = LINKTYPE_ETHERNET; - /* Convert ERF time to timeval - from libpcap. */ + /* Convert ERF time to SCTime_t */ uint64_t ts = dr.ts; p->ts = SCTIME_FROM_SECS(ts >> 32); ts = (ts & 0xffffffffULL) * 1000000; ts += 0x80000000; /* rounding */ uint64_t usecs = (ts >> 32); - if (usecs >= 1000000) { - usecs -= 1000000; - p->ts = SCTIME_ADD_SECS(p->ts, 1); - usecs++; - } p->ts = SCTIME_ADD_USECS(p->ts, usecs); etv->pkts++;