summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--loader/atlas.cpp2
-rw-r--r--loader/json.cpp1
-rw-r--r--loader/texture.cpp5
3 files changed, 4 insertions, 4 deletions
diff --git a/loader/atlas.cpp b/loader/atlas.cpp
index d7f21ce5..f285d3b1 100644
--- a/loader/atlas.cpp
+++ b/loader/atlas.cpp
@@ -87,7 +87,7 @@ bool loader_impl::check_atlas_name(StringView str)
{
if (str.isEmpty())
return false;
- if (str.findAny("\\<>&;:^'\" ") || str.find("/."))
+ if (str.findAny("\0\\<>&;:^'\""_s) || str.find("/."_s))
return false;
if (str[0] == '.' || str[0] == '/')
return false;
diff --git a/loader/json.cpp b/loader/json.cpp
index 77da5905..dbe21d50 100644
--- a/loader/json.cpp
+++ b/loader/json.cpp
@@ -39,6 +39,7 @@ const std::vector<serialized_scenery>& loader_impl::sceneries()
const scenery_proto& loader_impl::scenery(StringView name) noexcept(false)
{
+ fm_soft_assert(check_atlas_name(name));
if (sceneries_array.empty())
get_scenery_list();
auto it = sceneries_map.find(name);
diff --git a/loader/texture.cpp b/loader/texture.cpp
index 42940af2..6ffcc5d8 100644
--- a/loader/texture.cpp
+++ b/loader/texture.cpp
@@ -18,9 +18,8 @@ Trade::ImageData2D loader_impl::texture(StringView prefix, StringView filename_)
const auto N = prefix.size();
if (N > 0)
fm_assert(prefix[N-1] == '/');
- fm_soft_assert(filename_.size() < 4096);
- fm_soft_assert(filename_.find('\\') == filename_.end());
- fm_soft_assert(filename_.find('\0') == filename_.end());
+ fm_soft_assert(filename_.size() < 512);
+ fm_soft_assert(check_atlas_name(filename_));
fm_soft_assert(tga_importer);
constexpr std::size_t max_extension_length = 16;