From 77505f88735fb4e2006e815abf30c9a86960be7e Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Mon, 28 Mar 2011 12:09:07 +0200 Subject: [PATCH] Allow pcap-log to log outside of default-log-dir by passing a absolute path as filename. --- src/log-pcap.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/log-pcap.c b/src/log-pcap.c index 1792fa698e..482ed23f0e 100644 --- a/src/log-pcap.c +++ b/src/log-pcap.c @@ -338,8 +338,12 @@ int PcapLogOpenFileCtx(LogFileCtx *file_ctx, const char *prefix) if (file_ctx->filename != NULL) filename = file_ctx->filename; - else - filename = file_ctx->filename = malloc(PATH_MAX); /* XXX some sane default? */ + else { + filename = file_ctx->filename = SCMalloc(PATH_MAX); + if (filename == NULL) { + return -1; + } + } /** get the time so we can have a filename with seconds since epoch */ struct timeval ts; @@ -347,10 +351,15 @@ int PcapLogOpenFileCtx(LogFileCtx *file_ctx, const char *prefix) TimeGet(&ts); /* create the filename to use */ - char *log_dir; - if (ConfGet("default-log-dir", &log_dir) != 1) - log_dir = DEFAULT_LOG_DIR; + if (prefix[0] == '/') { + snprintf(filename, PATH_MAX, "%s.%" PRIu32, prefix, (uint32_t)ts.tv_sec); + } else { + char *log_dir; + if (ConfGet("default-log-dir", &log_dir) != 1) + log_dir = DEFAULT_LOG_DIR; + + snprintf(filename, PATH_MAX, "%s/%s.%" PRIu32, log_dir, prefix, (uint32_t)ts.tv_sec); + } - snprintf(filename, PATH_MAX, "%s/%s.%" PRIu32, log_dir, prefix, (uint32_t)ts.tv_sec); return 0; }