Skip to content
Snippets Groups Projects
Commit 515e7028 authored by kwolekr's avatar kwolekr
Browse files

Increase limit of serialized long strings

parent 5006ce82
No related branches found
No related tags found
No related merge requests found
......@@ -126,6 +126,10 @@ std::wstring deSerializeWideString(std::istream &is)
std::string serializeLongString(const std::string &plain)
{
char buf[4];
if (plain.size() > LONG_STRING_MAX)
throw SerializationError("String too long for serializeLongString");
writeU32((u8*)&buf[0], plain.size());
std::string s;
s.append(buf, 4);
......@@ -147,8 +151,10 @@ std::string deSerializeLongString(std::istream &is)
return s;
// We don't really want a remote attacker to force us to allocate 4GB...
if (s_size > LONG_STRING_MAX)
throw SerializationError("deSerializeLongString: string too long");
if (s_size > LONG_STRING_MAX) {
throw SerializationError("deSerializeLongString: "
"string too long: " + itos(s_size) + " bytes");
}
Buffer<char> buf2(s_size);
is.read(&buf2[0], s_size);
......
......@@ -426,8 +426,8 @@ inline video::SColor readARGB8(std::istream &is)
More serialization stuff
*/
// 8 MB is a conservative limit. Increase later if problematic.
#define LONG_STRING_MAX (8 * 1024 * 1024)
// 64 MB ought to be enough for anybody - Billy G.
#define LONG_STRING_MAX (64 * 1024 * 1024)
// Creates a string with the length as the first two bytes
std::string serializeString(const std::string &plain);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment