1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-08-06 17:41:04 +00:00

Enforce explicit size limit for media files

This commit is contained in:
sfan5 2025-07-15 12:41:38 +02:00
parent 3cb8ce69d2
commit 251488b3aa
3 changed files with 15 additions and 0 deletions

View file

@ -16,8 +16,14 @@ constexpr u16 CLIENT_PROTOCOL_VERSION_MIN = 37;
extern const u16 FORMSPEC_API_VERSION;
// (applies to all media files, not just textures)
#define TEXTURENAME_ALLOWED_CHARS "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.-"
// Due to our network protocol the maximum window size determines the maximum
// media size we can safely allow. See the comment and check in Connection::Send().
// This is a bit lower to include safety margin.
#define MEDIAFILE_MAX_SIZE (16700000U)
typedef u16 session_t;
enum ToClientCommand : u16

View file

@ -2586,6 +2586,12 @@ bool Server::addMediaFile(const std::string &filename,
<< filepath << "\"" << std::endl;
return false;
}
if (filedata.size() > MEDIAFILE_MAX_SIZE) {
errorstream << "Server::addMediaFile(): \""
<< filepath << "\" is too big (" << (filedata.size() >> 10)
<< "KiB). The internal limit is " << (MEDIAFILE_MAX_SIZE >> 10) << "KiB." << std::endl;
return false;
}
std::string sha1 = hashing::sha1(filedata);
std::string sha1_hex = hex_encode(sha1);