aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rspamd.com>2022-05-02 20:13:56 +0100
committerVsevolod Stakhov <vsevolod@rspamd.com>2022-05-02 20:13:56 +0100
commit89f17f72d353f89cbf78d9a8bfcaa1d445519f73 (patch)
tree714bcd04a27624c8bdbb48b379fba510092f06ef
parent1e294ebb7bfcb43e3cecc89f6281366cd191b59d (diff)
downloadrspamd-89f17f72d353f89cbf78d9a8bfcaa1d445519f73.tar.gz
rspamd-89f17f72d353f89cbf78d9a8bfcaa1d445519f73.zip
[Minor] Fix empty cache filename case
-rw-r--r--src/libserver/symcache/symcache_impl.cxx4
-rw-r--r--src/libutil/cxx/locked_file.cxx4
2 files changed, 8 insertions, 0 deletions
diff --git a/src/libserver/symcache/symcache_impl.cxx b/src/libserver/symcache/symcache_impl.cxx
index 0878ae32b..6b1802d96 100644
--- a/src/libserver/symcache/symcache_impl.cxx
+++ b/src/libserver/symcache/symcache_impl.cxx
@@ -258,6 +258,10 @@ static constexpr auto round_to_hundreds(T x)
bool symcache::save_items() const
{
+ if (cfg->cache_filename == nullptr) {
+ return false;
+ }
+
auto file_sink = util::raii_file_sink::create(cfg->cache_filename,
O_WRONLY | O_TRUNC, 00644);
diff --git a/src/libutil/cxx/locked_file.cxx b/src/libutil/cxx/locked_file.cxx
index 13406c6cf..6abc4a1b0 100644
--- a/src/libutil/cxx/locked_file.cxx
+++ b/src/libutil/cxx/locked_file.cxx
@@ -176,6 +176,10 @@ raii_mmaped_locked_file::raii_mmaped_locked_file(raii_mmaped_locked_file &&other
auto raii_file_sink::create(const char *fname, int flags, int perms,
const char *suffix) -> tl::expected<raii_file_sink, std::string>
{
+ if (!fname || !suffix) {
+ return tl::make_unexpected("cannot create file sink: bad input arguments");
+ }
+
auto tmp_fname = fmt::format("{}.{}", fname, suffix);
auto file = raii_locked_file::create(tmp_fname.c_str(), flags, perms);