From: Vsevolod Stakhov Date: Sun, 13 Nov 2022 20:43:20 +0000 (+0000) Subject: [Minor] Add some fail-safety for hyperscan cache X-Git-Tag: 3.5~204^2~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a20335aaa10aa57f5f89e11c08f7a9575d004972;p=thirdparty%2Frspamd.git [Minor] Add some fail-safety for hyperscan cache --- diff --git a/src/libserver/hyperscan_tools.cxx b/src/libserver/hyperscan_tools.cxx index 96366067de..2499b21ec2 100644 --- a/src/libserver/hyperscan_tools.cxx +++ b/src/libserver/hyperscan_tools.cxx @@ -147,11 +147,23 @@ public: } void add_cached_file(const char *fname) { - auto mut_fname = std::string{fname}; std::size_t sz; + rspamd_normalize_path_inplace(mut_fname.data(), mut_fname.size(), &sz); mut_fname.resize(sz); + + if (mut_fname.empty()) { + msg_err_hyperscan("attempt to add an empty hyperscan file!"); + return; + } + + if (access(mut_fname.c_str(), R_OK) == -1) { + msg_err_hyperscan("attempt to add non existing hyperscan file: %s, %s", mut_fname.c_str(), + strerror(errno)); + return; + } + auto dir = hs_known_files_cache::get_dir(mut_fname); auto ext = hs_known_files_cache::get_extension(mut_fname);