From: Victor Julien Date: Wed, 24 Apr 2024 07:46:11 +0000 (+0200) Subject: pcap: address codeql warning X-Git-Tag: suricata-8.0.0-beta1~1413 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a51b6fa6bd4eed260a0d7356c5a8da6c71cbd908;p=thirdparty%2Fsuricata.git pcap: address codeql warning Use of potentially dangerous function: localtime Windows localtime is thread safe and no localtime_r is availabe on Windows, so use separate logic for Windows. --- diff --git a/src/source-pcap-file-directory-helper.c b/src/source-pcap-file-directory-helper.c index 59c2116f99..91e40f6e7a 100644 --- a/src/source-pcap-file-directory-helper.c +++ b/src/source-pcap-file-directory-helper.c @@ -483,7 +483,15 @@ TmEcode PcapDirectoryDispatch(PcapFileDirectoryVars *ptv) struct timespec older_than; memset(&older_than, 0, sizeof(struct timespec)); older_than.tv_sec = LONG_MAX; - uint32_t poll_seconds = (uint32_t)localtime(&ptv->poll_interval)->tm_sec; + uint32_t poll_seconds; +#ifndef OS_WIN32 + struct tm safe_tm; + memset(&safe_tm, 0, sizeof(safe_tm)); + poll_seconds = (uint32_t)localtime_r(&ptv->poll_interval, &safe_tm)->tm_sec; +#else + /* windows localtime is threadsafe */ + poll_seconds = (uint32_t)localtime(&ptv->poll_interval)->tm_sec; +#endif if (ptv->should_loop) { GetTime(&older_than);