From: Vsevolod Stakhov Date: Mon, 2 May 2022 19:13:56 +0000 (+0100) Subject: [Minor] Fix empty cache filename case X-Git-Tag: 3.3~282 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=89f17f72d353f89cbf78d9a8bfcaa1d445519f73;p=thirdparty%2Frspamd.git [Minor] Fix empty cache filename case --- diff --git a/src/libserver/symcache/symcache_impl.cxx b/src/libserver/symcache/symcache_impl.cxx index 0878ae32b5..6b1802d964 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 13406c6cfc..6abc4a1b0d 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 { + 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);