Skip to content

Commit

Permalink
stat: add wrappers to isolate OS_WIN32 specifics
Browse files Browse the repository at this point in the history
  • Loading branch information
victorjulien committed Aug 11, 2023
1 parent 0cc6f4f commit 269f751
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 84 deletions.
10 changes: 3 additions & 7 deletions src/detect-engine.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@
#include "util-spm.h"
#include "util-device.h"
#include "util-var-name.h"
#include "util-path.h"
#include "util-profiling.h"
#include "util-validate.h"
#include "util-hash-string.h"
Expand Down Expand Up @@ -3813,13 +3814,8 @@ static int DetectEngineMultiTenantLoadTenant(uint32_t tenant_id, const char *fil

snprintf(prefix, sizeof(prefix), "multi-detect.%u", tenant_id);

#ifdef OS_WIN32
struct _stat st;
if(_stat(filename, &st) != 0) {
#else
struct stat st;
if(stat(filename, &st) != 0) {
#endif /* OS_WIN32 */
SCStat st;
if (SCStatFn(filename, &st) != 0) {
SCLogError("failed to stat file %s", filename);
goto error;
}
Expand Down
43 changes: 8 additions & 35 deletions src/runmode-unix-socket.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include "util-cpu.h"
#include "util-affinity.h"
#include "util-var-name.h"
#include "util-path.h"
#include "unix-manager.h"

#include "detect-engine.h"
Expand Down Expand Up @@ -323,11 +324,7 @@ static TmEcode UnixSocketAddPcapFileImpl(json_t *cmd, json_t* answer, void *data
bool should_delete = false;
time_t delay = 30;
time_t poll_interval = 5;
#ifdef OS_WIN32
struct _stat st;
#else
struct stat st;
#endif /* OS_WIN32 */
SCStat st;

json_t *jarg = json_object_get(cmd, "filename");
if (!json_is_string(jarg)) {
Expand All @@ -337,11 +334,7 @@ static TmEcode UnixSocketAddPcapFileImpl(json_t *cmd, json_t* answer, void *data
return TM_ECODE_FAILED;
}
filename = json_string_value(jarg);
#ifdef OS_WIN32
if (_stat(filename, &st) != 0) {
#else
if (stat(filename, &st) != 0) {
#endif /* OS_WIN32 */
if (SCStatFn(filename, &st) != 0) {
json_object_set_new(answer, "message",
json_string("filename does not exist"));
return TM_ECODE_FAILED;
Expand All @@ -365,11 +358,7 @@ static TmEcode UnixSocketAddPcapFileImpl(json_t *cmd, json_t* answer, void *data
return TM_ECODE_FAILED;
}

#ifdef OS_WIN32
if (_stat(output_dir, &st) != 0) {
#else
if (stat(output_dir, &st) != 0) {
#endif /* OS_WIN32 */
if (SCStatFn(output_dir, &st) != 0) {
json_object_set_new(answer, "message",
json_string("output-dir does not exist"));
return TM_ECODE_FAILED;
Expand Down Expand Up @@ -1016,11 +1005,7 @@ TmEcode UnixSocketUnregisterTenantHandler(json_t *cmd, json_t* answer, void *dat
TmEcode UnixSocketRegisterTenant(json_t *cmd, json_t* answer, void *data)
{
const char *filename;
#ifdef OS_WIN32
struct _stat st;
#else
struct stat st;
#endif /* OS_WIN32 */
SCStat st;

if (!(DetectEngineMultiTenantEnabled())) {
SCLogInfo("error: multi-tenant support not enabled");
Expand All @@ -1043,11 +1028,7 @@ TmEcode UnixSocketRegisterTenant(json_t *cmd, json_t* answer, void *data)
return TM_ECODE_FAILED;
}
filename = json_string_value(jarg);
#ifdef OS_WIN32
if (_stat(filename, &st) != 0) {
#else
if (stat(filename, &st) != 0) {
#endif /* OS_WIN32 */
if (SCStatFn(filename, &st) != 0) {
json_object_set_new(answer, "message", json_string("file does not exist"));
return TM_ECODE_FAILED;
}
Expand Down Expand Up @@ -1092,11 +1073,7 @@ static int reload_cnt = 1;
TmEcode UnixSocketReloadTenant(json_t *cmd, json_t* answer, void *data)
{
const char *filename;
#ifdef OS_WIN32
struct _stat st;
#else
struct stat st;
#endif /* OS_WIN32 */
SCStat st;

if (!(DetectEngineMultiTenantEnabled())) {
SCLogInfo("error: multi-tenant support not enabled");
Expand All @@ -1119,11 +1096,7 @@ TmEcode UnixSocketReloadTenant(json_t *cmd, json_t* answer, void *data)
return TM_ECODE_FAILED;
}
filename = json_string_value(jarg);
#ifdef OS_WIN32
if (_stat(filename, &st) != 0) {
#else
if (stat(filename, &st) != 0) {
#endif /* OS_WIN32 */
if (SCStatFn(filename, &st) != 0) {
json_object_set_new(answer, "message", json_string("file does not exist"));
return TM_ECODE_FAILED;
}
Expand Down
14 changes: 3 additions & 11 deletions src/source-pcap-file-directory-helper.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include "runmode-unix-socket.h"
#include "util-mem.h"
#include "util-time.h"
#include "util-path.h"
#include "source-pcap-file.h"

static void GetTime(struct timespec *tm);
Expand Down Expand Up @@ -219,23 +220,14 @@ TmEcode PcapDetermineDirectoryOrFile(char *filename, DIR **directory)

int PcapDirectoryGetModifiedTime(char const *file, struct timespec *out)
{
#ifdef OS_WIN32
struct _stat buf;
#else
struct stat buf;
#endif /* OS_WIN32 */
SCStat buf;
int ret;

if (file == NULL)
return -1;

#ifdef OS_WIN32
if((ret = _stat(file, &buf)) != 0)
return ret;
#else
if ((ret = stat(file, &buf)) != 0)
if ((ret = SCStatFn(file, &buf)) != 0)
return ret;
#endif

#ifdef OS_DARWIN
out->tv_sec = buf.st_mtimespec.tv_sec;
Expand Down
22 changes: 5 additions & 17 deletions src/suricata.c
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@
#include "util-macset.h"
#include "util-misc.h"
#include "util-mpm-hs.h"
#include "util-path.h"
#include "util-pidfile.h"
#include "util-plugin.h"
#include "util-privs.h"
Expand Down Expand Up @@ -502,11 +503,7 @@ static void SetBpfStringFromFile(char *filename)
char *bpf_comment_tmp = NULL;
char *bpf_comment_start = NULL;
uint32_t bpf_len = 0;
#ifdef OS_WIN32
struct _stat st;
#else
struct stat st;
#endif /* OS_WIN32 */
SCStat st;
FILE *fp = NULL;
size_t nm = 0;

Expand All @@ -516,11 +513,7 @@ static void SetBpfStringFromFile(char *filename)
exit(EXIT_FAILURE);
}

#ifdef OS_WIN32
if (_fstat(_fileno(fp), &st) != 0) {
#else
if (fstat(fileno(fp), &st) != 0) {
#endif /* OS_WIN32 */
if (SCFstatFn(fileno(fp), &st) != 0) {
SCLogError("Failed to stat file %s", filename);
exit(EXIT_FAILURE);
}
Expand Down Expand Up @@ -1955,13 +1948,8 @@ static TmEcode ParseCommandLine(int argc, char** argv, SCInstance *suri)
PrintUsage(argv[0]);
return TM_ECODE_FAILED;
}
#ifdef OS_WIN32
struct _stat buf;
if(_stat(optarg, &buf) != 0) {
#else
struct stat buf;
if (stat(optarg, &buf) != 0) {
#endif /* OS_WIN32 */
SCStat buf;
if (SCStatFn(optarg, &buf) != 0) {
SCLogError("pcap file '%s': %s", optarg, strerror(errno));
return TM_ECODE_FAILED;
}
Expand Down
19 changes: 5 additions & 14 deletions src/util-conf.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include "runmodes.h"
#include "util-conf.h"
#include "util-debug.h"
#include "util-path.h"

TmEcode ConfigSetLogDirectory(const char *name)
{
Expand Down Expand Up @@ -55,13 +56,8 @@ const char *ConfigGetLogDirectory(void)
TmEcode ConfigCheckLogDirectoryExists(const char *log_dir)
{
SCEnter();
#ifdef OS_WIN32
struct _stat buf;
if (_stat(log_dir, &buf) != 0) {
#else
struct stat buf;
if (stat(log_dir, &buf) != 0) {
#endif /* OS_WIN32 */
SCStat buf;
if (SCStatFn(log_dir, &buf) != 0) {
SCReturnInt(TM_ECODE_FAILED);
}
SCReturnInt(TM_ECODE_OK);
Expand Down Expand Up @@ -103,13 +99,8 @@ const char *ConfigGetDataDirectory(void)
TmEcode ConfigCheckDataDirectory(const char *data_dir)
{
SCEnter();
#ifdef OS_WIN32
struct _stat buf;
if (_stat(data_dir, &buf) != 0) {
#else
struct stat buf;
if (stat(data_dir, &buf) != 0) {
#endif /* OS_WIN32 */
SCStat buf;
if (SCStatFn(data_dir, &buf) != 0) {
SCReturnInt(TM_ECODE_FAILED);
}
SCReturnInt(TM_ECODE_OK);
Expand Down
10 changes: 10 additions & 0 deletions src/util-path.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,16 @@
#ifndef __UTIL_PATH_H__
#define __UTIL_PATH_H__

#ifdef OS_WIN32
typedef struct _stat SCStat;
#define SCFstatFn(fd, statbuf) _fstat((fd), (statbuf))
#define SCStatFn(pathname, statbuf) _stat((pathname), (statbuf))
#else
typedef struct stat SCStat;
#define SCFstatFn(fd, statbuf) fstat((fd), (statbuf))
#define SCStatFn(pathname, statbuf) stat((pathname), (statbuf))
#endif

#ifndef HAVE_NON_POSIX_MKDIR
#define SCMkDir(a, b) mkdir(a, b)
#else
Expand Down

0 comments on commit 269f751

Please sign in to comment.